single-sign-on - 从 WPF 客户端中的 ADAL 到 Windows Server 2012 R2 上的 ADFS 3.0 的单点登录

标签 single-sign-on adfs adal adfs3.0

我正在尝试编写一个 WPF 客户端,它使用 ADAL 在 Windows Server 2012 R2 上针对 ADFS 进行身份验证。我已经使用“表单例份验证”成功实现了这一点,系统会提示用户输入域用户名和密码。但是,我想利用 SSO 并使用当前登录的域用户对 ADFS 进行身份验证。

不幸的是,我只收到一条错误消息:

This method overload is not supported by '< ADFS servername>'

我做了很多搜索,但发现一些信息是矛盾的:

Windows Server 2016 是否需要结合 ADAL 执行 SSO? 还有其他方法吗?

编辑:

升级到最新的 ADAL alpha (3.9.302111717-alpha) 后,我收到了更详细的错误消息

MSIS9611: The authorization server does not support the requested 'grant_type'. The authorization server only supports 'authorization_code' or 'refresh_token' as the grant type.

我正在执行的代码是这样的:

string authority = "https://myServer.com/adfs";
string resourceURI = "http://myApp/";
string clientId = "XXXX-XXX-XXXX-XXXX-XXXXX";
string clientReturnUri = "http://anarbitraryreturnuri/";

var ac = new AuthenticationContext(authority, false);
var token = await ac.AcquireTokenAsync(resourceURI, clientId,new UserCredential());

我能够使用 WS-Trust 实现一个可行的解决方案,因此我确信我正在运行的机器具有隐私设置,使应用能够找到当前登录的用户。

Oauth2 端点如下所示: OAuth2 endpoint configuration

此外,我的全局身份验证策略是这样设置的:

Global Authentication Policy settings

最佳答案

只有密码授予才需要 Windows Server 2016 - 您可以在其中提供原始用户名和密码。您的问题似乎表明您想要使用当前登录的用户登录,这将利用 Kerberos。 基于 Kerberos 的身份验证应该无差别地与 ADFS“3”和 ADFS 2016 一起工作——只要您的客户端连接到域网络,本地机器就没有隐私设置来阻止您的应用程序找出当前登录的域用户和在 ADFS 实例上启用了正确的端点。

关于single-sign-on - 从 WPF 客户端中的 ADAL 到 Windows Server 2012 R2 上的 ADFS 3.0 的单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35412805/

相关文章:

winforms - WinForm 使用带有 SSO 的 webview2

angular - 如何使用 Azure AD 作为身份提供者为 Angular 7.x 应用程序实现基于 SAML 的身份验证?

c# - asp.net mvc 上的自定义授权属性

asp.net - 使用 UmbracoIdentity 和 MVC 5 身份验证的 SSO Umbraco 7

java - JSP+Tomcat : Single Sign-On

node.js - 为 SSO 实现 oAuth 是否合适?

authentication - 在我的 SAAS 应用程序中对外部 ADFS 用户进行身份验证

adfs - 除非授权或登录,否则如何将 ckan 重定向到外部 url

asp.net-mvc - 如何在 ASP.NET MVC 中实现单点登录 (ADFS)

c# - Microsoft.Crm.Sdk.Samples.HelperCode 无法编译