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

abh*_*ash 13 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)使用Native SSO App:IDP通常提供本机SSO应用程序,移动应用程序可以登录IDP.移动应用程序可以通过相应IDP提供的SDK与IDP的本机应用程序进行交互.但由于我们的移动应用程序应该能够支持许多IDP的SSO,如果我们遵循这种方法,我们可能必须为每个IDP集成多个Native SSO应用程序.我不确定这在我们的场景中是否合理

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

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

非常感谢!

And*_*bel 6

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

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

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