根据SAML IDP对移动用户进行身份验证

时间:2014-05-13 05:07:08

标签: restful-authentication saml-2.0

我正在寻找一个解决方案 - 针对SAML IDP对移动应用用户进行身份验证,并获得了一些基本查询(我是SAML,OAuth的新手:)) 在这种情况下,流程可能类似于移动用户将由IDP进行身份验证,IDP生成的SAML响应将发送到服务提供商(通过移动浏览器 - Webview)。然后,服务提供商将创建一个令牌,移动应用程序将使用该令牌进行后续呼叫。这种理解是否正确?

此外,如果相应的IDP应该支持移动应用,移动用户将如何在IDP进行身份验证?登录时会在手机上看到IDP的登录界面吗?

在我的应用程序中,目前,移动(Rest API)用户根据其应用程序在数据库中的凭据进行身份验证。但现在桌面应用程序正在整合SAML进行身份验证。因此,移动用户需要针对SAML IDP进行身份验证。

提前致谢!

1 个答案:

答案 0 :(得分:27)

是的,您的理解是正确的。要在移动客户端上使用SAML IDP,您需要经历与普通客户端相同的过程(AuthnRequest - > SP和IDP之间的响应交换)。整个流程可能如下所示:

  • 您的移动应用程序会打开WebView,它会访问您SP的公共网址
  • 您的SP通过使用AuthnRequest
  • 将重定向发送到SAML IDP,开始使用IDP进行身份验证
  • 用户在IDP内部进行身份验证(在移动客户端使用移动客户端打开时,应该可以正常呈现)
  • IDP通过回复重定向回您的SP
  • 您的SP应用程序处理响应并生成可与您的Rest API一起使用的令牌
  • SP将令牌传回移动应用程序(例如,使用WebViewClient + onPageFinished + cookies,或调用addJavascriptInterface提供的对象,或者您已经使用的任何对象)

与通常使用IDP的移动身份验证(例如使用OAuth 2 for Facebook / Google)相比,SAML更复杂。使用OAuth 2.0,可以使用自定义URL方案轻松提取授权令牌和拦截响应,而无需Web部署(SP)组件。由于SAML不支持类似于"隐含"在Oauth中(出于安全原因)并且由于SAML响应的处理要复杂得多(由于XML签名,XML加密......),因此在使用SAML时这种方法是不可行的。