集成 Azure AD 和 AWS "Your request included an invalid SAML response"



遵循中概述的步骤https://learn.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-响应

  1. 属性名称角色会话名称更改为角色会话名称

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

  3. 命名空间需要https://aws.amazon.com/SAML/Attributes对于RoleSessionName和Role

在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登录,这似乎是一个解决方案,除非我将其解释为与我所需要的相反。

总结上述讨论

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

用例

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

探索的解决方案

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

问题

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

下一步

  • 当然可以跳过AWS集成
  • 使用默认Azure登录UI将是最简单的解决方案,但不可行
  • 寻找一些可以用来做同样事情的PHP库。大多数IdP都像Cognito、Auth0-tec。提供可用于使用Username&密码,即可以实现他自己的登录UI&提取用户名、密码&在SDK方法中使用它。检查是否可以使用Azure SDK
  • 这个库的可能解决方案,但未经测试,不在PHP中

相关内容

最新更新