我正在尝试为两个网站实施SSO,目前正在调查SAML
和OpenID Connect
。但我需要使用相同的凭据来验证基于Swing的桌面客户端。
我已经了解了OpenID Connect的隐含流程,但它仍然需要打开浏览器。
似乎解决了这类问题的SAML增强型客户端或代理配置文件似乎没有被我尝试过的大多数idps实现。 (只有Shibboleth支持它,而Shibboleth的文档并不那么好。)
答案 0 :(得分:2)
OpenID Connect尝试解决双方之间共享用户身份验证的问题:身份提供商(OP)和客户端。
OIDC文档中没有明确说明,但根据我的经验 OIDC并未尝试解决您在不同平台上对自己的用户进行身份验证的方式(网络,移动/桌面)
这是OAuth 2.0" Resource Owner Password Credentials grant"的极少数有效用例之一,其中客户端exchanges是令牌的用户凭据。
您在自己的系统内部,您的移动/桌面应用程序不能被视为第三方,它只为用户提供可靠的方式向您发送凭据。
您可以确保应用程序不存储它们,因为您可以控制代码库。
编辑:移动应用实例可以共享(除非您设法动态分配客户端ID)client ID/secret that cannot be kept confidential。它构成了really thin客户端身份验证层,尝试确保请求确实来自您的移动/桌面应用程序:
POST /oauth/token HTTP/1.1
Authorization: Basic ${BASE64_ENCODED_CLIENTID_CLIENTSECRET}
grant_type=password&
username=${USERNAME}&
password=${PASSWORD}
有些人不喜欢指定如何对用户进行身份验证,而某些公司可能拥有除用户名+密码之外的其他凭据,例如使用双因素身份验证时。此外,有些人使用ROPC授予错误,因为它只在组织内部有效,允许客户端请求您自己的用户凭据正在扼杀SSO /授权协议。
OIDC is still OAuth 2.0,这意味着您可以自由实施自己的"用户凭据"从您的桌面/移动应用程序获取访问令牌+ ID令牌的流程。但它超出了OIDC的范围。
顺便说一句,SAML是在移动应用程序不在图片中时创建的:
2005年3月,SAML 2.0被批准为OASIS标准