使用Azure和SCP(SAP云平台)等企业云系统需要了解如何利用和实施SSO(单点登录)身份验证。这两个云系统都采用SAML 2.0协议来实现SSO,这非常容易配置。但是,我不清楚如何将此协议用于JavaScript SPA WebApp以实现登录表单。Azure提供以下API。
的数据
调用这些API的方式是什么?Azure提供了一个good introductive documentation,但从开发的Angular 来看,我找不到任何实际的使用示例。有必要使用图书馆吗?可能我误解了SAML的目的,我应该使用不同的认证协议,如OAuth 2.0。是这样吗?
1条答案
按热度按时间xa9qqrwz1#
这是一个非常古老的问题,但答案并没有太大变化。SAML不适合SPA应用程序,因为它依赖HTTP POST来传输数据,并且需要在SPA端保护密钥。
我的建议是首先尝试使用更适合SPA的身份验证方法。例如OpenID连接。如果您的IdP不支持OpenId连接,或者您有一些必须使用SAML的要求。最好的方法是使用身份代理解决方案。
使用身份代理时,您有一个软件充当SPA使用的OpenID连接和IdP使用的SAML之间的转换器。这样,您可以在SPA中使用OpenID连接标准,但在IdP上仍然使用SAML。
Keycloak是一个很好的,免费的,开源的替代使用身份代理。
几个月前,I wrote a blog post on how to set this up用于React SPA,ADFS IdP和Keycloak作为身份代理。在Vagrant和虚拟盒子中也有一个自动演示环境,您可以使用它来尝试。