【问题标题】:Using Microsoft as an IdP in AWS Cognito在 AWS Cognito 中使用 Microsoft 作为 IdP
【发布时间】:2019-05-14 17:46:13
【问题描述】:

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

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

以及使用 Microsoft 作为身份提供者的文档:https://docs.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 在配置中添加了一个 Web 平台: https://myapp.com/socialSignIn
  • 在 AWS Cognito 中设置用户池并为其添加应用程序客户端
  • 使用所需的 Microsoft 配置数据(来自 Microsoft 注册应用的应用程序 ID 和私钥以及来自 https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration 的 authentication/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

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

【问题讨论】:

  • 你让它工作了吗?

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


【解决方案1】:

我通过在 Cognito 中的 Microsoft OIDC Provider 中将 https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0 设置为颁发者来修复它。

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

https://apps.dev.microsoft.com/#/application/{your app id} 中配置的重定向 url 必须是 https://{your Amazone Cognito Domain}/oauth2/idpresponse

并且您需要在您的 Cognito 用户池的应用程序集成 > 应用程序客户端设置中启用提供程序

【讨论】:

  • 这确实是一个解决方案,如果您只需要让您的应用程序与所有私人 Microsoft 帐户一起工作,但如果您必须让您的应用程序与私人帐户以及任何教育和工作租户(多租户应用程序)一起工作) - 那么这将不起作用 - 看到这个问题:stackoverflow.com/q/64331213/5276779
猜你喜欢
  • 2022-07-26
  • 2021-09-04
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 2019-05-15
  • 2020-06-17
  • 2022-12-03
相关资源
最近更新 更多