Oauth 尝试使用Cognito通过Battle.net OIDC进行身份验证时出现错误的id_令牌颁发者
过去几天我一直在尝试设置Cognito以使用Battle.NETOIDC。我相信我已经走到了那里。我可以看到,使用cognito托管的UI,它可以正确地进行身份验证,但随后失败,可能是试图检索令牌 对cognito托管UI的第一个请求:Oauth 尝试使用Cognito通过Battle.net OIDC进行身份验证时出现错误的id_令牌颁发者,oauth,openid,amazon-cognito,aws-amplify,openid-connect,Oauth,Openid,Amazon Cognito,Aws Amplify,Openid Connect,过去几天我一直在尝试设置Cognito以使用Battle.NETOIDC。我相信我已经走到了那里。我可以看到,使用cognito托管的UI,它可以正确地进行身份验证,但随后失败,可能是试图检索令牌 对cognito托管UI的第一个请求: https://.auth.us-west-2.amazoncognito.com/oauth2/authorize?identity_provider=Blizzard&redirect_uri=https:///oauth&response_type=COD
https://.auth.us-west-2.amazoncognito.com/oauth2/authorize?identity_provider=Blizzard&redirect_uri=https:///oauth&response_type=CODE&client_id=&scope=openid
然后,下一个请求是按预期发送到Battle.net OIDC:
https://us.battle.net/oauth/authorize?client_id=&redirect_uri=https%3A%2F%2F.auth.us-west-2.amazoncignito.com%2fauth2%2fiddresponse&scope=openid&response\u type=code&state=
然后将代码传递到cognito IDP响应:
https://.auth.us-west-2.amazoncognito.com/oauth2/idpresponse?code=&state=
此时,如果我的理解正确,cognito应该尝试点击battle.net/誓言/token
端点,然后将id\u令牌和access\u令牌返回到我的重定向\u url。它在cognito处返回一个错误到我的url:
https:///oauth?error_description=Bad+id\u令牌+颁发者+oauth.battle.net&error=无效\u请求
从缺少Battle.net OIDC文档的情况来看,我可能是尝试将Battle.net OIDC与Cognito结合使用的少数人之一。这很可能是他们的实现中的一个bug,但我不想马上得出这个结论
我现在最好的猜测是,我没有正确配置Cognito来发出令牌POST请求。使用clientid:password,但我无法验证它是否正确,因为它被抽象掉了
无论如何,当我通过我的应用程序发出请求时(使用amplify打开托管UI),它确实会返回,但会出现以下情况:
[ERROR] 51:05.25 OAuth - Error handling auth response. Error: Bad+id_token+issuer+oauth.battle.net
at OAuth.<anonymous> (OAuth.js:202)
at step (OAuth.js:52)
at Object.next (OAuth.js:33)
at OAuth.js:27
at tryCallTwo (core.js:45)
at doResolve (core.js:200)
at new Promise (core.js:66)
at __awaiter (OAuth.js:23)
at OAuth.handleAuthResponse (OAuth.js:181)
at AuthClass.<anonymous> (Auth.js:1632)
[ERROR]51:05.25 OAuth-错误处理身份验证响应。错误:错误+id\u令牌+颁发者+oauth.battle.net
在OAuth
应用程序客户端:
- 姓名:[已删除]
- 应用程序客户端id:[已删除]
- 应用程序客户端密钥:(无密钥)
应用程序客户端设置:
- 启用的身份提供程序:暴雪
- 回调URL:
- 注销URL:
- 允许的OAuth流:
- 授权码授予
- 隐性补助
- 允许的OAuth作用域
- 电子邮件
- openid
- aws.cognito.signin.user.admin
- 侧面图
- (我已经尝试了这些方法的每一种变体,但似乎没有改变结果)
联合身份:
- 身份验证提供者
- OpenID
- us.battle.net/oauth
IAM身份提供者:
- 提供商名称:us.battle.net/oauth
- 提供程序类型:OIDC
- 提供商URL:us.battle.net/oauth
- CA指纹:[已删除]
- 观众:[我的战网客户端id]
我已经用尽了我自己的资源,并要求任何有关这方面的指导
谢谢 这是由于暴雪从其知名端点发出令牌,但将iss
字段设置为oauth.battle.net
,导致Cognito(或任何其他令牌验证)失败,因此出现错误消息
Bad+id\u令牌+发卡机构+oauth.battle.net
我在Discord中向他们的API团队提出了这一点,根据发送给开发人员的电子邮件,他们将在11月25日发布一个修复程序
亲爱的社区开发者:
今年早些时候,我们引入了一个新的OAuth发现端点
实现OpenID连接发现规范。我们想要
将更改部署到id_令牌的iss字段
OpenID授权从oauth.battle.net流向
由众所周知的配置端点JSON响应返回。这
对某些OAuth OIDC客户端来说,这可能是一个突破性的改变
但它符合OpenID connect规范:
您的OAuth客户端应用程序被标识为
受这种变化的影响
我们计划于2019年11月25日发布此更改
以下是确保OpenID连接的步骤
更改后,客户将继续工作:
导航到其中一个已知的配置终结点,在该终结点下方
对应于客户端应用程序运行的区域,并且
检查“颁发者”字段
如果issuer字段与为OAuth OIDC配置的issuer匹配
客户端然后您的客户端是兼容的,并且您已经是兼容的
不需要做任何改变
如果来自已知配置终结点的issuer字段为
请与客户端配置中设置的发卡机构不同
更改颁发者以匹配已知的配置终结点
如果您的客户端支持OpenID发现端点标准,则
可以将其配置为从已知数据库读取所有必要的设置
配置端点。您的OAuth客户端应该自行配置