首页 > 解决方案 > 使用 AD/ADFS 和 .NET Native Client 的 SSO

问题描述

我的问题是关于 Active Directory (AD)、Active Directory 联合服务 (ADFS)、Single Sing On (SSO) 和 SAML。

我们有一个具有以下规格的客户端/服务器应用程序: - 客户端:基于 .NET 4.7.2 和 C# 的 WPF .NET Native Client - 服务器:基于 Java Spring 的 REST-Service

一项主要要求是带有 AD/ADFS 的 SSO。在最佳情况下,用户应该无缝/静默地进行身份验证。

主要限制是基于 Windows Server 2012 R2 的 AD 和 ADFS。

在下图中,您可以了解我们计划如何使用 ADFS 实施 SSO。

SSO-场景

目前,我对 .NET Native Client 中的 SSO 和 ADFS 完全感到困惑。我找不到任何合适的演示等。许多演示或用例都与 ASP.NET 有关,但几乎与本机客户端无关。我开始怀疑我对带有 AD/ADFS 和 SAML 的 SSO 的假设是否不正确。

我开始使用了解 ADFS 和 ADFS 简介中描述的虚拟机构建 AD-ADFS-Lab 。然后我尝试使用 ADFS-Server 但无法完成。

我在看这个库:

经过 1 周的研究,我的脑袋开始旋转:

我知道有 OAuth。我知道 Windows Server 2012 并不是最适合这个场景的最新版本。但要求和限制直接来自我们的客户。

更新

我能够使用 WS-Trust 与我的 ADFS-Server “对话”并获得 SAML-Token。

private static void Main(string[] args)
    {
        string adfs = "https://ad-fs.adlab.local";
        string adfsEndpoint = "https://ad-fs.adlab.local/adfs/services/trust/13/usernamemixed";
        string appServer = "https://ad-server.adlab.local/sampapp/";

        var factory = new WSTrustChannelFactory(new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), adfsEndpoint);
        factory.TrustVersion = TrustVersion.WSTrust13;

        var channelCredentials = factory.Credentials;

        channelCredentials.UserName.UserName = "Administrator@adlab";
        channelCredentials.UserName.Password = "SsoLab2019";
        channelCredentials.SupportInteractive = false;

        RequestSecurityToken rst = new RequestSecurityToken
        {
            RequestType = RequestTypes.Issue,
            AppliesTo = new EndpointReference(appServer),
            KeyType = KeyTypes.Bearer
        };

        var channel = factory.CreateChannel();

        try
        {
            var token = (GenericXmlSecurityToken)channel.Issue(rst);
            Console.Write(token.TokenXml.OuterXml);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        Console.ReadKey();
    }

不,我必须弄清楚如何获得 SAML-Token 静音/无缝。

标签: c#single-sign-onsamladfswif

解决方案


推荐阅读