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": <?>
}
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": <?>
}