amazon-web-services - 在 AWS Cognito 中使用 Microsoft 作为 IdP

标签 amazon-web-services openid amazon-cognito microsoft-account

我正在尝试使用 AWS Cognito 用户池中的 Microsoft 帐户实现社交登录。

为了配置用户池以允许 OpenID Connect 身份验证,我遵循了 AWS 的 Cognito 文档:https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-provider.html#cognito-user-pools-oidc-providers

以及使用 Microsoft 作为身份提供者的文档:https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc - 根据我的理解,如果我在 Microsoft 此处注册了一个应用程序,则必须使用 V2 端点:https://apps.dev.microsoft.com我想验证@live 帐户

所以我遵循了这些步骤:

  • 在 Microsoft 注册了一个应用程序:https://apps.dev.microsoft.com/和 使用 redirectURL 在配置中添加了一个网络平台: https://myapp.com/socialSignIn
  • 在 AWS Cognito 中设置用户池并为其添加应用程序客户端
  • 使用所需的 Microsoft 配置数据(来自 Microsoft 注册应用程序的应用程序 ID 和私钥以及来自 https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration 的身份验证/ token /UserInfo/Jwks 端点)为用户池配置 OpenID Connect 提供商
  • 在 Cognito 中配置应用程序客户端以使用 Microsoft 作为身份提供者并将允许的 OAuth 流程添加为代码授权并启用 openId 作为允许的 OAuth 范围并添加回调 URL:https://myapp.com/socialSignIn (与为 Microsoft 应用程序配置的网址相同)
  • 为用户池配置 Amazon Cognito 域名,以便使用内置登录页面

所以我尝试使用 Amazon Cognito 提供的登录页面测试社交登录流程,该页面可通过以下 URL 访问:https://sso-module.auth.eu-central-1.amazoncognito.com/login?response_type=code&client_id=19tsqvqibqpg617c5kplhqjuba&redirect_uri=https://myapp.com/socialLogin

选择使用已配置的 Microsoft IDP 登录后,我被重定向到 Microsoft 登录页面,在输入我的 Microsoft Live 帐户用户名后,我收到错误消息: 为输入参数“redirect_uri”提供的值无效。预期值为 ' https://login.live.com/oauth20_desktop.srf ' 或匹配为此客户端应用程序注册的重定向 URI 的 URL

此外,当我被重定向到 Microsoft 登录页面时,我在 URL 中看到 redirect_url 参数设置为 cognito 登录页面,而不是我在 cognito 中为应用程序客户端配置的 url

我是否遗漏了什么或我应该怎么做才能使这项工作成功?

最佳答案

我通过设置修复了它 https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0作为我在 Cognito 中的 Microsoft OIDC 提供商中的发行人。

我还为此提供商配置了nameemail 的属性映射。

https://apps.dev.microsoft.com/#/application/中配置的重定向url {您的应用 ID} 必须是 https://{您的 Amazone Cognito 域}/oauth2/idpresponse

并且您需要在 Cognito 用户池的 App Integration > App client settings 中启用提供程序

关于amazon-web-services - 在 AWS Cognito 中使用 Microsoft 作为 IdP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763052/

相关文章:

.net-core - 如何使用 .AddJwtBearer() 在 .NET Core Web API 中验证 AWS Cognito JWT

ios - Amazon Cognito 开发人员使用 iOS SDK 进行身份验证

javascript - 如何使用 AWS IoT 组立即更新组设备影子?

laravel - Laravel 的 AWS SES 403 权限错误

node.js - 为什么 AWS Lambda 函数返回 null?

oauth-2.0 - 使用 OAuth 访问 SPA 和 REST API 时,RBAC 的用户组成员身份应该存储在哪里

amazon-web-services - 为什么 EC2 Autoscaling 仅支持 Classic Load Balancer?

php - Facebook 和 Twitter 支持的 OpenID 样式登录

gwt - 简单的 GWT OpenID 示例

aws-cloudformation - AWS Cognito Lambda 触发器不是使用 CDK 创建的