这更像是一个设计问题。
我们有用Java和Spring编写的Web应用程序“webapp”,我们的组织内部以及外部人员都在使用它。当用户尝试登录到应用程序时,它会尝试在本地数据库中查找用户。如果有密码(加密),它将对其进行身份验证,如果密码列为空,它将与LDAP通信并对用户进行身份验证。现在我们有一个新的移动应用程序“mobileapp”,其中包含指向“webapp”的链接。我们正在考虑在此处实施SSO,以便移动应用用户在点击此链接时不必再次登录。我们还认为,未来将需要更多的服务和应用程序必须在相同的身份验证/授权平台上密切合作。我们认为我们可以做的事情很多 -
听起来这是一个很好的解决方案吗?有没有更好的方法来处理这个问题?是否已经在Java / Spring / Oauth / OpenID connect / JWT等中构建了这样的解决方案?
答案 0 :(得分:1)
对我来说,您需要考虑三个主要用例:
我看到两个主要解决方案:
1)使用CAS协议,a)登录Web流程是微不足道的,b)Web服务调用是通过CAS代理支持(更复杂)和c)移动应用程序身份验证流程(将凭证直接发布到服务器) )可以通过REST API支持实现。
2)使用OAuth / OpenID Connect协议,a)通过授权代码流协议支持登录Web流程; b)使用先前检索到的ID令牌通过HTTP请求进行Web服务调用,以及c)移动设备如果移动应用程序接收到凭据,则可以使用OAuth资源所有者密码授予流程完成应用程序身份验证流程,如果移动设备在嵌入式Web浏览器中调用了登录页面,则可以通过隐式流程完成。
请参阅:What OpenID Connect authorization flow to authenticate mobile app users?和http://connect2id.com/learn/openid-connect
免责声明:我是CAS提交者,也是pac4j安全库的创建者(www.pac4j.org)