在集成Azure AD和AWS

时间:2017-11-02 04:57:15

标签: php azure amazon-web-services

遵循https://docs.microsoft.com/en-us/azure/active-directory/active-directory-saas-amazon-web-service-tutorial中列出的步骤,正如Dirk_Nelson在评论中指出的那样:

  

错误:您的请求包含无效的SAML响应。要注销,   点击这里。

     

在挖掘AWS的文档后,我发现了这篇文章:   http://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_saml.html#troubleshoot_saml_invalid-response

     
      
  1. 属性名称rolesessionname已更改为RoleSessionName

  2.   
  3. 属性名称角色已更改为角色

  4.   
  5. 对于BOTH RoleSessionName和Role

  6. ,命名空间必须为https://aws.amazon.com/SAML/Attributes         

    在Azure门户中进行了这些更改之后我就能够了   成功验证。

虽然我已经有了这个。或者,亚马逊故障排除页面说明这是由于ARN缺少属性值。

<AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>

我也尝试了这个,但没有运气。还有什么可以遗漏的吗?

最终目标是通过存储在 Azure AD 中的用户登录 Amazon Cognito ,这似乎是一个解决方案,除非我将此解释为相反的路径我需要什么。

1 个答案:

答案 0 :(得分:1)

总结上述讨论

  • 无效的SAML响应是由于SAML响应中缺少属性(角色)

使用案例

  • 使用Azure AD使用自定义UI在PHP应用程序中实现身份验证

探索解决方案

  • 将Azure AD与Cognito集成为SAML IdP
  • 将Azure AD与Cognito集成为OIDC提供程序
  • 直接在您的应用中使用Azure AD OIDC provider
  • 完全跳过AWS集成&amp;使用自定义库

<强>问题

  • 上述所有解决方案都重定向到Microsoft登录页面

后续步骤

  • 跳过AWS集成,肯定是
  • 使用默认的Azure登录UI将拥有最简单的解决方案,但不可行
  • 寻找一些可用于执行相同操作的PHP库。大多数IdP如Cognito,Auth0 tec。提供SDK,可用于使用用户名和实用程序实用地获取令牌。密码,即可以实现他自己的登录UI&amp;提取用户名,密码和在SDK方法中使用它。使用Azure SDKs
  • 检查是否可以
  • 使用this库的可能解决方案,但未经测试,而不是PHP。