问题描述
我遇到了一个第三方应用程序的问题,该应用程序允许OpenID Connect作为标识源,但是它们似乎在请求中传递了无效的范围,这导致了我们的问题。第三方对我们的回应令人沮丧,“没有人告诉我们这是一个问题”,因此我们在这方面的进展还不算太远,所以我想在这里问一下是否有人可以帮助他们指出潜在的问题解决方法,或者给我一些明确的信息以提供给第三方。情况是...
- 第三方应用程序重定向到
https://myapplication.auth.eu-west-2.amazoncognito.com/oauth2/authorize?client_id=xxxxxxxxxxxxxxxxxx&redirect_uri=https://myapplication.com/auth/oidc&scope=openid profile email phone address&response_type=code&state=std
- Cognito重定向到
https://myapplication.com/auth/oidc?error_description=invalid_scope&state=std&error=invalid_request
问题出在scope=openid
个人资料电子邮件电话地址参数中。 Cognito中没有address
范围。如果第三方应用程序重定向到...
https://my-application.auth.eu-west-2.amazoncognito.com/oauth2/authorize?client_id=xxxxxxxxxxxxxxxxxx&redirect_uri=https://myapplication.com/auth/oidc&scope=openid%20profile%20email%20phone&response_type=code&state=std
...相反(没有address
范围),一切正常。
值得注意的是,我们确实在Cognito UI的“属性”下勾选了“地址”,并且自定义范围将不起作用,因为在这种情况下,我们需要将范围设为“地址”,这正是应用程序所要的。我注意到,Cognito UI中的“允许的OAuth范围”部分仅列出了“电话”,“电子邮件”,“ openid”,“ aws.cognito.signin.user.admin”和“配置文件”范围,但我没有不知道为什么会这样,但这取决于Cognito或我假设的标准。
此外,我们尝试使用Cognito Lambda预令牌生成触发器,但我们仍然看到相同的结果,因此自从首先将请求抛出为无效请求以来,似乎没有触发该触发器。
感谢您提供的任何帮助。
提前谢谢,阿什。
解决方法
由身份提供者决定要支持哪些范围。如果您使用Auth0之类的服务或IdentityServer之类的产品,则由开发人员自行选择要支持的范围。即使它是标准范围的一部分。