我已经将mod_auth_openidc与Google一起使用,并将phpOIDC的手动滚动版本作为我的OP,并将mod_auth_openidc作为我的身份提供者。
我的问题似乎是Microsoft实现中的错误。
mod_auth_openidc是一个很棒的mod,并且进行了相当多的验证。
JWT中返回的内容之一是“ aud”参数,它是受众。
根据Open ID Connect规范:
aud REQUIRED. Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences. In the general case, the aud value is an array of case sensitive strings. In the common special case when there is one audience, the aud value MAY be a single case sensitive string.
我的客户ID是00000001234(不是我的真实ID,仅是示例)。
我通过握手进行操作,一切都很繁琐,我从Windows Live获得了现时的“代码”,然后将其交换为我的令牌,但是获得的令牌的“ aud”值为:
00000000-0000-0000-0000-00000001234
mod_auth_openidc会正确检查返回的令牌中的“ aud”值,并以错误响应,因为“ aud”与配置的cliend_id不匹配,根据规范应该如此。
我的问题是,除了不验证令牌的受众之外,还有什么方法可以在MS Developer控制台中配置该应用程序,以便它针对返回的令牌中的“ aud”值正确返回客户端ID?
Sans认为,在实施中报告此类错误的最佳位置是哪里?
实际上,在文档中没有任何地方login.live.com
说MS Live符合OpenID Connect。它确实提到它已经在OAuth 2.0之上构建了自己的SSO协议。
似乎您通过反复试验发现MS Live支持OpenID Connect的重要部分(众所周知位置的发现文档,JWKS URI,openid
范围等),这本身就是我的新闻。但是不幸的是,似乎仍然缺少一件小事……这可能也是尚未宣布OpenID Connect支持MS Live ID的原因。
MS在Azure AD中的OpenID Connect实施已完全兼容,但Live ID尚未实现。我想您所能做的就是Bug MS。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句