使用SAML / OpenID Connect为两个网站实施SSO。如何验证Swing客户端?

时间:2015-05-26 09:46:44

标签: single-sign-on native saml openid-connect

我正在尝试为两个网站实施SSO,目前正在调查SAMLOpenID Connect。但我需要使用相同的凭据来验证基于Swing的桌面客户端。

我已经了解了OpenID Connect的隐含流程,但它仍然需要打开浏览器。

似乎解决了这类问题的SAML增强型客户端或代理配置文件似乎没有被我尝试过的大多数idps实现。 (只有Shibboleth支持它,而Shibboleth的文档并不那么好。)

  • 什么样的解决方案可以解决这个问题?
  • 是否有其他支持本机和Web的SSO机制 应用程序?
  • OpenID Connect / SAML是否有针对此类的解决方法 问题?
  • 仅公开一个经过身份验证的REST API是一个好主意 Swing客户端使用与SSO IdP相同的凭据?

1 个答案:

答案 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标准