IBM Cloud Docs
技术

技术

搞不清楚授权与认证的区别? 搞不清的不止您一人。 请查看以下信息以了解有关使用 IBM Cloud® App ID 时所用的特定术语、流程和技术。

想进一步了解授权和身份验证的一些基本概念吗? 请查看此处。 在以下视频中,可以了解 OAuth 2.0、授权类型、OIDC 等内容。

OAuth 2

OAuth2.0是用于提供应用程序授权的开放标准协议。

Open ID Connect (OIDC)

OIDC 是使用 OAuth 的认证层 2。 当您同时使用 OIDC 和App ID时,您的应用程序凭据有助于配置 OAuth 端点。 如果使用 SDK,将自动构建端点 URL。 但是,您还可以使用服务凭证自行构建 URL。 URL 采用以下格式:App ID 服务端点 + "/oauth/v4" + /tenantID。

示例:

{
  "clientId": "7eba72ef-b913-47b0-b3b6-54358bb69035",
  "tenantId": "8f5aa500-357e-443a-aab6-bf878f852b5a",
  "secret": "OWEzZGM4M2UtZjhlYS00MDI2LTkwNGItNDJmYzViMmU2YzIz",
  "name": "testing",
  "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a",
  "profilesUrl": "https://us-south.appid.cloud.ibm.com",
  "discoveryEndpoint": "https://us-south.appid.ibm.cloud.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a/.well-known/openid-configuration"
}

使用此示例时,URL 将为 https://us-south.appid.cloud.ibm.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a。 然后,附加要向其发出请求的端点。 请查看下表以了解一些示例端点。

端点示例
端点 格式
授权 <oauthServerUrl>/authorization
令牌 <oauthServerUrl>/token
用户信息 <oauthServerUrl>/userinfo
JWKS <oauthServerUrl>/publickeys

使用 SDK 时,将自动构建端点 URL。

令牌

服务使用三种不同类型的令牌。 令牌在App ID仪表板的身份供应商 > 管理中设置。 有关令牌及其在 App ID 中的使用方式的更多信息,请查看管理令牌

  • 访问令牌:代表授权,可与受保护的 后台资源 进行通信。 资源由 App ID 设置的授权过滤器进行保护。

  • 身份令牌:表示认证并包含关于用户的信息。

  • 刷新令牌:可用于获取新的访问令牌,而无需重新认证用户。 通过使用刷新令牌,用户可以允许应用程序记住其信息,这意味着用户可以保持登录状态。

授权头

App ID符合 承载令牌规范,并结合使用访问令牌和身份令牌,作为 HTTP 授权头发送。 Authorization 头包含以空格分隔的三个不同部分。 这些令牌采用 Base64 编码。 身份令牌是可选的。

示例:

Authorization=Bearer <accessToken> [<idToken>]

API 策略

API 策略期望请求包含带有有效访问令牌的授权头。 该请求还可以包含身份令牌,但这并不是必需的。 如果令牌无效或到期,那么 API 策略会返回 HTTP 401 错误,其中包含以下 HTTP 头:

Www-Authenticate=Bearer scope="<scope>" error="<error>"

如果请求返回有效的令牌,那么控制权会传递到下一个中间件,并且 appIdAuthorizationContext 属性会注入请求对象中。 此属性包含原始访问令牌和身份令牌,以及解码为纯 JSON 对象的有效内容信息。

Web 应用程序策略

Web 应用程序策略检测到对受保护资源的未经授权的访问尝试时,会自动将用户的浏览器重定向到认证页面,该页面可以由 App ID 提供。 成功认证后,用户会返回到 Web 应用程序的回调 URL。 Web 应用程序策略会获取访问令牌和身份令牌,并将其存储在 HTTP 会话中的 WebAppStrategy.AUTH_CONTEXT 下。 由用户决定是否将访问令牌和身份令牌存储在应用程序数据库中。

重定向 URI

App ID 使用已核准的标准 URI 列表,在用户与应用程序交互后重定向用户。 例如,如果用户成功登录,App ID 会将用户重定向到应用程序的主页或您指定的其他页面。 根据应用程序,URI 的格式可能会变化。 请查看添加重定向 URI 以获取更多信息。

JSON Web 密钥集 (JWKS)

JWKS 表示一组密钥。App ID 使用 JWKS 来验证服务生成的令牌的真实性。 通过使用密钥标识来验证签名,我们可以确保令牌是由可信源 App ID发出的。 我们还可以确保令牌中的信息从未更改。