什么是可支持多个IDP的原生移动应用程序的最佳SSO解决方案?

时间:2014-12-02 09:06:43

标签: mobile oauth single-sign-on saml-2.0 spring-saml

在我们目前的情况下,我们的基于Web的应用程序(SP)已经使用Spring Security SAML扩展集成了SSO。我们的产品是SaaS,我们有不同的客户,他们可能在其末端配置了不同的IDP (身份提供商)。 现在,我们正在努力为我们的移动应用程序提供SSO支持。

经过一番搜索后,我发现了3种可能的解决方案:

1)使用Web视图:当为客户端启用SAML时,移动应用程序将嵌入Web视图,该视图在打开移动应用程序时呈现IDP登录页面。将触发SP侧的URL,这将触发SAML重定向回IDP。因此,webview将执行SP发起的登录流程。但是,由于webview不使用cookie空间,因此每次应用程序被终止或会话过期时,用户都必须登录该应用程序。另外由于webview不是浏览器,我已经读过它在HTTP重定向期间可能无法处理边缘情况。

2)使用原生SSO应用:IDP通常会提供原生SSO应用,移动应用可以在其中登录IDP。移动应用程序可以通过相应IDP提供的SDK与IDP的本机应用程序进行交互。但由于我们的移动应用程序应该能够支持许多IDP的SSO,如果我们遵循这种方法,我们可能必须为每个IDP集成多个Native SSO应用程序。我不确定这在我们的场景中是否合理

3)使用OAuth和SAML :第三个​​选项是向我们的移动应用添加OAuth支持。 Salesforce等IDP支持OAuth授权移动应用,但我不确定所有IDP是否支持OAuth,以及为移动应用实施OAuth和SAML的难度。

有谁能告诉我在上面的场景中哪种方法更可取,还是有更好的方法我没有考虑过?有什么建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:6)

对于移动应用,我认为OAuth2或OpenID Connect比SAML更受欢迎。它们适用于移动解决方案。

它们还具有与验证服务器通信的反向通道的概念。这意味着您可以安全地启动设备的默认浏览器以进行登录,并从该设备中的任何Cookie中受益。用户在浏览器中进行身份验证后,应用程序将通过后台通道接收令牌,并在其中调用auth服务器。

如果您有SAML-only Idps,则选项是使用身份服务器进行转换,该转换充当SAML2 SP和OAuth服务器。