我正在使用需要SAML来管理OpenAM服务器身份验证的应用程序。

实际上,我将Satellizer与OAuth2隐式授权流程结合使用,并且具有以下特点:

  • 在浏览器
  • 中打开angularjs应用
  • 单击第三方登录按钮
  • 一个新窗口悬停在现有窗口上(使用ng app)已打开,询问我的凭据
  • 我填充它们,并验证
  • 页面已填充(生成 token )
  • angularjs应用程序通过Windows获取 token (怎么可能?)
  • 我可以将我的应用程序与OAuth2 bearer/jwt token 一起使用。

  • 我需要使用SAML进行某些操作。事实是我完全迷路了,似乎我应该使用后端登录到SAML服务器...

    我真的不喜欢这种情况,我需要知道使用客户端应用程序是否还有更好的事情要做。

    使用SAML的客户端应用程序的“常规”身份验证流程是什么?

    谢谢你的帮助

    最佳答案

    SAML2是在尚未发明带有JavaScript的客户端应用程序的概念时设计的。

    一种常见的方法是使用中间的OpenID Connect/SAML2代理/桥(例如IdentityServer3 + Kentor.AuthServices.Owin)来对用户进行身份验证:

  • 用户开始在JS应用中登录。
  • 用户被重定向(OpenID Connect流的一部分)到IdentityServer3。
  • 用户被重定向到SAML2 Idp(SAML2P的一部分)。
  • 用户在SAML2 Idp上进行身份验证。
  • 用户被重定向回IdentityServer3(SAML2P的一部分)。
  • 用户被重定向回JS应用程序(OpenID Connect流的一部分)。

  • 这非常有用,可以使用户通过外部Idp进行身份验证。如果您拥有诸如后端服务之类的资源,那么通常会通过在步骤6发出的OAuth2承载 token 来授权这些调用。

    如果您的后端API期望使用SAML断言而不是承载 token ,那么您将不得不考虑我们的方式。

    关于javascript - Angularjs和SAML的开始,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37164639/

    10-12 06:58