部署 API 客户机

API 客户机部署在 Web 应用程序的应用程序服务器部分中。 用户交互启动 API 客户机执行的操作。

用户操作

用户在 Web 应用程序上执行的步骤与 API 客户机执行的操作相关联。
  1. 用户登录。
    • 策略认证已启动。
      • 如果返回了拒绝,那么应用程序将向用户返回错误页面,该页面指示用户当前无法登录。
      • 应用程序可以根据需要的因子提供不同的 UX。
      • 或者,在用户提供凭证后跳过此步骤并执行 ROPC。 密码是唯一可以执行的第一因子。
    • 用户提供认证数据。
      • API 客户机调用因子 API ,然后将 JWT 返回到 /token
      • 如果不需要进一步认证,那么将对用户进行认证。 如果需要 MFA,那么将向用户返回合适的 UX。
    • 用户完成 MFA
      • 每当返回具有 mfa_challenge 作用域的令牌时,API 客户机将执行对因子的后续调用。

访问令牌的主权

当部署使用 ISV API 进行认证的 API 客户机时,必须决定使用访问令牌执行的内容以及可能由于此流而发出的刷新令牌。

要考虑的详细信息。
  • 仅向浏览器返回完全访问令牌。 返回 mfa_challenge 时,浏览器会话将进入事务。
  • 请在应用程序服务器上保留刷新令牌。
  • 如果访问令牌返回到浏览器,那么 Web 应用程序将包含用于检测到期访问令牌的逻辑。 即,来自受保护 API 的 401 或 403 条件。 该条件在应用程序服务器上启动刷新令牌流,并向浏览器发出新令牌。 此流允许在需要 MFA 时返回附加的 mfa_challenge

资源服务器注意事项

必须执行其他检查,
  • 部署使用 API 授权类型的访问策略向客户机发出的访问令牌的资源服务器时。
  • 对 ISV 发出的访问令牌进行自省时。
访问令牌返回 mfa_challenge
"active": true
自省之后 资源服务器必须包含自省访问令牌的 scope 不是 mfa_challenge 的检查。
mfa_challenge 令牌的示例自省。
{
  "entitlements": [
    "authn",
    "readEnrollMFAMethod"
  ],
  "at_hash": "Z3vQf5X3vzGu7sYqJShe_g",
  "ext": {
    "tenantId": "securitypoc.ice.ibmcloud.com"
  },
  "sub": "6030003FNL",
  "amr": [
    "password"
  ],
  "uniqueSecurityName": "6030003FNL",
  "iss": "https://securitypoc.ice.ibmcloud.com/oidc/endpoint/default",
  "active": true,
  "token_type": "Bearer",
  "client_id": "89136d7c-564b-4ea4-aa5b-19b0d9a8a47f",
  "aud": "89136d7c-564b-4ea4-aa5b-19b0d9a8a47f",
  "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
  "restrictEntitlements": true,
  "scope": "mfa_challenge",
  "grant_id": "bdbdd509-2866-46cd-b5cf-f5c5a4385691",
  "category": "application",
  "exp": 1594019673,
  "app_id": "2512439131051198658",
  "iat": 1594017873
}
authnAnyUser注: 对于尚未进行多因素身份验证(MFA)的令牌,其 mfa_challenge 权限为。