我有 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 获得我的 nonce “代码”,然后我用它交换我的令牌,但我得到的令牌有一个“aud”值:
00000000-0000-0000-0000-00000001234
mod_auth_openidc 正确检查返回令牌中的“aud”值,并以错误响应,因为“aud”与配置的 cliend_id 不匹配,根据规范,这是应该的。
我的问题是,除了不验证令牌的受众之外,还有什么方法可以在 MS Developer 控制台中配置应用程序,以便它为返回的令牌中的“aud”值正确返回客户端 ID?
没有那个,在他们的实现中报告此类错误的最佳地点在哪里?