在我们目前的情况下,我们的基于Web的应用程序(SP)已经使用Spring Security SAML扩展集成了SSO。我们的产品是一种SaaS,我们有不同的客户端可能在其端配置了不同的IDP(身份提供者)。现在我们正试图为我们的移动应用程序提供SSO支持。
经过一些搜索,我找到了3个可能可以实现的解决方案:
1) 使用Web View:当为客户启用SAML时,移动应用程序将嵌入Web View,该Web View会在打开移动应用程序时呈现IDP登录页面。 SP端上的URL将被访问,这将触发一个SAML重定向回IDP。因此,Web View将执行SP-initiated登录流程。但由于Web View没有使用Cookie空间,用户必须每次重新登录应用程序或会话过期时重新登录。另外,由于Web View不是浏览器,我读到它可能无法处理HTTP重定向期间的边缘情况。
2) 使用本地SSO应用程序:IDP通常提供本地SSO应用程序,移动应用程序可以登录IDP。移动应用程序可以通过各自IDP提供的SDK与IDP的本地应用程序进行交互。但由于我们的移动应用程序应该能够支持多个IDP的SSO,如果我们采用这种方法,我们可能需要为每个IDP集成多个本地SSO应用程序。我不确定在我们的情况下是否可行。
3) 使用OAuth和SAML:第三个选项是向我们的移动应用程序添加OAuth支持。像Salesforce这样的IDP支持OAuth来授权移动应用程序,但我不确定所有IDP是否都支持OAuth以及实现OAuth和SAML对于移动应用程序有多困难。
请问有谁能告诉我在上述情况下哪种方法是可取的,或者是否有任何更好的方法我没有考虑?有什么建议吗?
非常感谢!
经过一些搜索,我找到了3个可能可以实现的解决方案:
1) 使用Web View:当为客户启用SAML时,移动应用程序将嵌入Web View,该Web View会在打开移动应用程序时呈现IDP登录页面。 SP端上的URL将被访问,这将触发一个SAML重定向回IDP。因此,Web View将执行SP-initiated登录流程。但由于Web View没有使用Cookie空间,用户必须每次重新登录应用程序或会话过期时重新登录。另外,由于Web View不是浏览器,我读到它可能无法处理HTTP重定向期间的边缘情况。
2) 使用本地SSO应用程序:IDP通常提供本地SSO应用程序,移动应用程序可以登录IDP。移动应用程序可以通过各自IDP提供的SDK与IDP的本地应用程序进行交互。但由于我们的移动应用程序应该能够支持多个IDP的SSO,如果我们采用这种方法,我们可能需要为每个IDP集成多个本地SSO应用程序。我不确定在我们的情况下是否可行。
3) 使用OAuth和SAML:第三个选项是向我们的移动应用程序添加OAuth支持。像Salesforce这样的IDP支持OAuth来授权移动应用程序,但我不确定所有IDP是否都支持OAuth以及实现OAuth和SAML对于移动应用程序有多困难。
请问有谁能告诉我在上述情况下哪种方法是可取的,或者是否有任何更好的方法我没有考虑?有什么建议吗?
非常感谢!