single-sign-on - 使用 SAML/OpenID Connect 为两个网站实现 SSO。如何验证 Swing 客户端?

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

我正在尝试为两个网站实现 SSO,目前已研究 SAMLOpenID Connect .但我需要使用相同的凭据对基于 Swing 的桌面客户端进行身份验证。

我已经阅读了 OpenID Connect 的隐式流程,但它似乎仍然需要打开浏览器。

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

  • 什么样的解决方案适用于这个问题?
  • 是否有任何其他同时支持 native 和 Web 的 SSO 机制
    应用?
  • 对于这种类型的 OpenID Connect/SAML 是否有解决方法
    问题?
  • 只公开一个进行身份验证的 REST API 是否是个好主意
    Swing 客户端使用与 SSO IdP 相同的凭据?
  • 最佳答案

    OpenID Connect 试图解决在两方之间共享用户身份验证的问题:身份提供者 (OP) 和客户端。

    这在 OIDC 文档中没有明确说明,但根据我的经验 OIDC 不会尝试解决您如何跨不同平台验证自己的用户 (网络、移动/桌面)。

    这是 OAuth 2.0“Resource Owner Password Credentials grant”的极少数有效用例之一,其中客户端 exchanges token 的用户凭据。

    在这里,您在自己的系统中,您的移动/桌面应用程序不能被视为第三方,它只为用户提供一种可信的方式向您发送其凭据。
    您可以确保应用程序不会存储它们,因为您可以控制代码库。

    编辑:移动应用程序实例可以共享(除非您设法动态分配客户端 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}
    

    有些人不喜欢它指定如何对用户进行身份验证,有些公司可能拥有除用户名+密码之外的其他凭据,例如在使用 2 因素身份验证时。此外,有些人错误地使用了 ROPC 授权,因为它仅在组织内部有效,允许客户端请求您自己的用户凭据正在扼杀拥有 SSO/授权协议(protocol)的意义。

    OIDC is still OAuth 2.0 ,这意味着您可以自由实现自己的“用户凭据”流程,以从您的桌面/移动应用程序获取访问 token + ID token 。但它不在 OIDC 的范围内。

    顺便说一句,SAML是在移动应用程序还没有真正出现的时候创建的:

    SAML 2.0 was ratified as an OASIS Standard in March 2005

    关于single-sign-on - 使用 SAML/OpenID Connect 为两个网站实现 SSO。如何验证 Swing 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455050/

    相关文章:

    javascript - React Native - 状态未正确更新

    .net - .NET 应用程序可以编译为 native 吗?

    java - 解密断言的 Opensaml 断言签名验证失败

    java - 如何使用 SAML 在 Java 中实现 SSO?

    c# - 使用 x509 证书签署 SAML 断言时出现“格式错误的引用元素”

    Azure SSO 错误 : AADSTS50020 when prompt=consent and user is a live account

    android - Unity 中的 native Android 库抛出 DllNotFound 异常

    saml - Keycloak 使用 SAML 注销

    javascript - 使用 javascript 和 Node 的 Windows AD 单点登录

    c# - ASP.NET MVC 单点登录和角色