3

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

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

“<ADFS 服务器名>”不支持此方法重载

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

是否需要 Windows Server 2016 与 ADAL 一起执行 SSO?还有其他方法吗?

编辑

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

MSIS9611:授权服务器不支持请求的“grant_type”。授权服务器仅支持“authorization_code”或“refresh_token”作为授权类型。

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

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 端点配置

另外,我的全局身份验证策略设置如下:

全局身份验证策略设置

4

1 回答 1

1

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

于 2016-02-16T09:30:59.980 回答