如何从SAML/OIDC配置中识别源身份提供商(如Azure AD等)
身份提供商识别与OIDC自定义域名问题解答
一、从SAML/OIDC配置中识别源身份提供商
SAML协议场景
可以通过以下关键信息识别:
- 实体ID(EntityID):不同厂商的实体ID有固定格式特征:
- Azure AD:通常为
https://sts.windows.net/<租户ID>/ - Google Cloud Identity:格式一般是
https://accounts.google.com/o/saml2?idpid=<IDP ID> - Okta:实体ID会包含Okta域名,比如
https://<你的okta域名>.okta.com/app/<应用ID>/sso/saml/metadata - PingIdentity:实体ID可能包含
pingidentity.com,或自定义域名但元数据签名证书的颁发者会指向Ping的CA
- Azure AD:通常为
- 签名证书颁发者:多数厂商的SAML签名证书由自身CA签发,证书的Issuer字段会带有厂商标识
- SAML响应的Issuer字段:实际认证返回的SAML响应里,Issuer值会直接暴露身份提供商的官方域名或特征格式
OIDC协议场景
默认情况下可通过这些信息识别:
- .well-known/openid-configuration里的issuer字段:不同厂商的issuer有固定格式,比如:
- Azure AD:
https://login.microsoftonline.com/<租户ID>/v2.0 - Google:
https://accounts.google.com - Okta:
https://<你的okta域名>.okta.com/oauth2/v1
- Azure AD:
- JWKS端点的密钥证书:密钥链中的x5c证书,其Subject或Issuer字段会带有厂商的官方CA标识,比如Google的证书由Google Trust Services签发,Azure的由Microsoft Azure TLS Issuing CA签发
二、OIDC自定义域名下的身份提供商识别
当企业用自定义域名反向代理OIDC端点,导致.well-known/openid-configuration里的所有端点都是自定义域名时,可通过以下方式溯源:
- 解析ID Token的payload:ID Token是身份提供商签发的JWT,其中的
iss声明(颁发者)必须与身份提供商的官方issuer一致,不会被自定义域名覆盖。直接解码ID Token的payload部分(无需验证签名即可查看),就能拿到真实的身份提供商域名,进而识别厂商 - 查看JWKS返回的证书链:即使端点是自定义域名,JWKS返回的公钥证书的Issuer或Subject字段仍会保留身份提供商的官方CA信息,通过证书信息可反向定位到对应厂商
内容的提问来源于stack exchange,提问作者TestOnly
相关产品推荐
相关产品推荐

