我无法将我的应用程序配置为使用来自外部身份提供程序(在本例中为OneLogin)的SAML响应。我的应用程序有一个javascript(angular5)前端和.NET后端。
以下是我们使用自己的身份提供商和服务提供商时的当前工作流程。
现在,客户已要求我们使用OneLogin集成其外部身份提供商。以下是我理解的新工作流程。
目前,我们的角度前端(客户端)和.NET后端(服务器)之间的所有通信都是由客户端启动的。我真正需要的是客户端接收由OneLogin发布的SAML响应表格数据,这样我就可以与我们的服务提供商发起授权并在客户端收到相应的响应,但据我所知,我赢了#39;能够使用表单数据客户端。我希望我可以将外部身份提供程序重定向到我们前端的页面并将该saml响应编码为查询参数,但我没有看到任何方法。
我觉得有些东西我缺少,但所有OneLogin示例似乎都是与服务器端服务提供商通信的OneLogin身份提供商,而没有提到客户端。我可以使用一些帮助来更好地理解我需要做些什么来完成我的目标,通知客户端用户已经过身份验证和授权。
答案 0 :(得分:2)
您使用OneLogin描述的是SAML2 Web浏览器SSO配置文件。如您所见,它都是通过浏览器完成的。用户从客户端重定向到他们登录的IdP。然后,IdP将SAMLResponse发布到后端的属性消费者服务(ACS)URL。 ACS的工作是解码SAMLResponse并解析其中包含的SAML2属性。如果需要,它可以在该点创建一个新会话。
此时后端现在知道用户是谁。因此,您可以启动另一个重定向,将浏览器发送到另一个URL,该URL带有一个参数,让客户知道它必须从后端检索用户详细信息。也许是某种/sso?token=something
网址。然后,客户端可以要求后端返回JSON,其中可能包含token
引用的用户信息,即后端在验证属性后创建的某种会话。