可以在 OAuth 中的身份抽取阶段创建定制 HTML 表单来确保用户安全性。
本机 OAuth 提供者配置包括使用隐式、访问代码或资源所有者密码授权类型时的身份抽取。 您可以选择如何抽取用户凭证,其中一个选项为定制 HTML 表单。 如需更多信息,请参阅 《配置原生 OAuth 提供程序 》。 本主题描述如何为身份抽取创建定制 HTML 表单。
关于本任务
在三个 OAuth 定义(隐式流、资源所有者密码流和访问(授权)代码流)期间,将向用户提供用于登录 API 所提供服务的表单。 您可以提供定制表单或缺省表单。 您的定制表单必须满足特定需求。
重要提示: IBM® API Connect 用于将信息注入表单的字段名称区分大小写。
要为本机 OAuth 提供者创建定制登录表单,请完成以下步骤:
- API Connect 解析格式正确的 XHTML 文档以插入隐藏字段。
- 对于 XHTML 表单,请将方法设置为 POST,将编码类型设置为 application/x-www-form-urlencoded,并将操作设置为 authorize。 添加您需要的任何其他参数。
例如,
<form method="POST" enctype="application/x-www-form-urlencoded" action="authorize">
- 创建名为 username 的文本输入字段,并创建名为 password的密码输入字段。
- 添加行 <EI-INJECT-HIDDEN-INPUT-FIELDS>。 第三个元素是一个占位符, API Connect 将替换为输入字段以补充用户提交的数据。
- 创建用于启动登录过程的按钮。
例如,
<button id="login_button" type="submit" name="login" value="true">Log in</button>
- 可选: 添加在用户首次访问登录页面时显示的文本。 请在您希望显示的文本 <EI-LOGINFIRSTTIME> 前添加 标签。
- 可选: 添加在用户身份验证失败并被重定向回登录页面时显示的提示文本。 请在您希望显示的文本 <EI-LOGINFAILED> 前添加 标签。
- 可选: 当自定义表单出现错误,导致无法正确显示给用户时,请显示一条错误信息。 使用标记 <EI-INTERNAL-CUSTOM-FORM-ERROR/>;将自动生成消息文本。 您应在测试过程中检测到此类错误,以避免向用户显示此错误信息。
- 可选: 您可以添加从外部来源加载的元素,例如图片或 JavaScript。
- 根据需要插入间隔和其他功能。 完成第 1 至第 8 步后,将生成一个类似于以下示例的表单:
<html lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head>
<body>
<form method="POST" enctype="application/x-www-form-urlencoded" action="authorize">
<h1>Please sign in</h1>
<p>Username </p>
<p style="text-indent: 0em;"><input type="text" name="username" required="required" /> </p>
<p>Password </p>
<p style="text-indent: 0em;"><input type="password" name="password" required="required" /> </p>
<EI-INJECT-HIDDEN-INPUT-FIELDS/>
<p style="text-indent: 2em;"> <button id="login_button" type="submit" name="login" value="true">Log in</button> </p>
<EI-LOGINFIRSTTIME>
<p>If you have forgotten your user name or password, contact your system administrator.</p>
</EI-LOGINFIRSTTIME>
<EI-LOGINFAILED>
<p style="color: red">At least one of your entries does not match our records.
If you have forgotten your user name or password, contact your system administrator.</p>
</EI-LOGINFAILED>
<EI-INTERNAL-CUSTOM-FORM-ERROR/>
</form>
</body>
</html>
- 在您选择的 URL 中提供您的表单。
- 如果您尚未这样做,请配置本机 OAuth 提供者以使用定制 HTML 表单进行身份抽取,并提供可使用您的表单的 URL。