为确保用户安全性创建定制 HTML 登录表单

可以在 OAuth 中的身份抽取阶段创建定制 HTML 表单来确保用户安全性。

准备工作

本机 OAuth 提供者配置包括使用隐式、访问代码或资源所有者密码授权类型时的身份抽取。 您可以选择如何抽取用户凭证,其中一个选项为定制 HTML 表单如需更多信息,请参阅 《配置原生 OAuth 提供程序 》。 本主题描述如何为身份抽取创建定制 HTML 表单。

关于本任务

在三个 OAuth 定义(隐式流、资源所有者密码流和访问(授权)代码流)期间,将向用户提供用于登录 API 所提供服务的表单。 您可以提供定制表单或缺省表单。 您的定制表单必须满足特定需求。

重要提示: IBM® API Connect 用于将信息注入表单的字段名称区分大小写。

过程

要为本机 OAuth 提供者创建定制登录表单,请完成以下步骤:
  1. API Connect 解析格式正确的 XHTML 文档以插入隐藏字段。
  2. 对于 XHTML 表单,请将方法设置为 POST,将编码类型设置为 application/x-www-form-urlencoded,并将操作设置为 authorize。 添加您需要的任何其他参数。
    例如,
    <form method="POST" enctype="application/x-www-form-urlencoded" action="authorize">
  3. 创建名为 username 的文本输入字段,并创建名为 password的密码输入字段。
  4. 添加行 <EI-INJECT-HIDDEN-INPUT-FIELDS>。 第三个元素是一个占位符, API Connect 将替换为输入字段以补充用户提交的数据。
  5. 创建用于启动登录过程的按钮。
    例如,
    <button id="login_button" type="submit" name="login" value="true">Log in</button>
  6. 可选: 添加在用户首次访问登录页面时显示的文本。 请在您希望显示的文本 <EI-LOGINFIRSTTIME> 前添加 标签。
  7. 可选: 添加在用户身份验证失败并被重定向回登录页面时显示的提示文本。 请在您希望显示的文本 <EI-LOGINFAILED> 前添加 标签。
  8. 可选: 当自定义表单出现错误,导致无法正确显示给用户时,请显示一条错误信息。 使用标记 <EI-INTERNAL-CUSTOM-FORM-ERROR/>;将自动生成消息文本。 您应在测试过程中检测到此类错误,以避免向用户显示此错误信息。
  9. 可选: 您可以添加从外部来源加载的元素,例如图片或 JavaScript。
  10. 根据需要插入间隔和其他功能。 完成 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>
  11. 在您选择的 URL 中提供您的表单。
  12. 如果您尚未这样做,请配置本机 OAuth 提供者以使用定制 HTML 表单进行身份抽取,并提供可使用您的表单的 URL。