代码之家  ›  专栏  ›  技术社区  ›  unintentionally left blank

如何使用SAML对Windows窗体客户端进行身份验证?

  •  0
  • unintentionally left blank  · 技术社区  · 4 年前

    我一直在研究使用身份提供者(IDP)为Windows窗体客户端提供用户身份验证。用户凭据将由Auth0托管。在使用Auth0创建了一个试用帐户后,我下载了一个示例C#Windows窗体客户端应用程序,可以使用OpenID Connect(“OIDC”)对Auth0 IDP进行身份验证。WinForms示例应用程序弹出一个web浏览器组件,显示Auth0登录屏幕,我登录到Auth0 IDP(在Auth0中设置了一些测试凭据),然后WinForms应用程序会收到一个身份验证令牌。一切都很好,如果我尝试第二次登录,我就不再需要输入我的凭据。

    然而我将从生产中获取身份验证数据的公司希望使用SAML。有什么办法吗?根据我所读到的,SAML需要一个“服务提供商”,该提供商将从IDP接收凭据。服务提供商(通常是?)一个网站。这似乎与我试图做的(验证windows客户端)不太匹配。有没有什么方法可以使用SAML来完成我使用OIDC(从IDP获取用户的身份验证信息)所做的事情?我需要为此开发一个单独的服务提供商组件吗?

    0 回复  |  直到 4 年前
        1
  •  0
  •   Gary Archer    3 年前

    听起来你到目前为止所做的一切在建筑上都很好:

    • 遵循OIDC标准的现代桌面应用程序

    这使您在架构上处于一个良好的位置,其中:

    • 您的应用程序使用OIDC从Auth0获取令牌
    • Auth0可以与其他基于标准的身份提供程序进行联合身份验证,这些身份提供程序可以是SAML、OIDC、WS-Federation或其他任何形式
    • 这可以在不更改应用程序中任何代码的情况下完成,并且应用程序不需要理解SAML

    感觉您需要设置从Auth0到SAML服务提供商的联合连接,这通常包括以下步骤:

    • 您将实体Id和响应URL提供给合作伙伴,以便向其发布令牌
    • 它们为您提供am实体Id、公钥证书和请求URL
    • 您可以围绕帐户链接配置规则,以便用户可以在他们的系统和您的系统之间进行匹配

    不过,有一些先决条件,外部身份提供程序需要符合SAML 2.0。我的 Federated Logins Article 可能会帮助您理解一般概念,但我在这里不深入讨论SAML的细节。