Azure Active Directory 是否有 OAuth/OpenID Connect 令牌内省端点?

Does Azure Active Directory have an OAuth/OpenID Connect token introspection endpoint?

Azure Active Directory 是否有用于验证 OpenID Connect(或 OAuth)访问令牌的内省端点(如 RFC7662 中所定义)?

没有。您可以通过 OpenID Provider Configuration 检查 Azure Active Directory 支持的所有端点。

如果您有关于 Azure AD 的想法或反馈,可以尝试从 UserVoice:Azure Active Directory 提交。

特别是您可以对 Introspection endpoint for Azure Active Directory Suggestion

投票

没有内省端点

Azure AD 没有内省端点。

但是,根据您要实现的目标,即使没有该端点也可能仍然可行。

正在验证访问令牌

使用令牌调用 userinfo_endpoint 以查看它是否仍然有效。例如

GET /oidc/userinfo HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <access token>

如果调用returns200,访问令牌有效。如果是returns401,则无效。

获取信息about/from访问令牌

有 2 种类型的访问令牌:独立的或占位符(参见 RFC6749 Section 1.4 for more info). Azure AD's access tokens are JWTs 并且是独立的。

您可以通过解码访问令牌获取到期信息、AD 应用名称、租户信息、用户信息等。

Azure AD 访问令牌的 JWT 负载如下所示:

{
  "aud": "00000000-0000-0000-0000-000000000000",
  "iss": "https://sts.windows.net/<tenant_id>/",
  "iat": 1637179385,
  "nbf": 1637179385,
  "exp": 1637183923,
  "acct": 0,
  "acr": "1",
  "aio": "<base64_string>",
  "amr": [
    "pwd",
    "mfa"
  ],
  "app_displayname": "<app_registration_display_name>",
  "appid": "<app_id>",
  "appidacr": "1",
  "family_name": "<user_family_name>",
  "given_name": "<user_given_name>",
  "idtyp": "user",
  "ipaddr": "<user_ip>",
  "name": "<user_name>",
  "oid": "<uuid>",
  "onprem_sid": "<on-premises_sid_of_user>",
  "platf": "8",
  "puid": "<hex_id>",
  "rh": "<?>",
  "scp": "email openid profile",
  "signin_state": [
    "kmsi"
  ],
  "sub": "<user_subscriber_identifier>",
  "tenant_region_scope": "NA",
  "tid": "<tenant_id>",
  "unique_name": "<user_email_or_unique_identifier>",
  "upn": "<user_email>",
  "uti": "<?>",
  "ver": "1.0",
  "wids": [
    "<uuid>"
  ],
  "xms_st": {
    "sub": "<?>"
  },
  "xms_tcdt": <?>
}