【问题标题】:SSO from ADAL in WPF Client to ADFS 3.0 on Windows Server 2012 R2从 WPF 客户端中的 ADAL 到 Windows Server 2012 R2 上的 ADFS 3.0 的 SSO
【发布时间】:2016-05-26 13:35:13
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,@vibronet。但是,我仍然遇到问题。我已经用其他信息更新了我的帖子。你能看出什么可能是我的问题的根源吗?
    • 现在我更好地理解了您的情况,感谢您提供额外的详细信息。对于 Windows Server 2012 R2,该方法不能直接针对 ADFS - 只有在 ADFS 与 Azure AD 联合时才有效。如果您想坚持使用 2012,则需要像进行表单身份验证一样调用 AcquireToken - 但使用 PromptBehavior.Never。 从 Intranet 这应该导致 SSO,因为它使用了一个不可见的浏览器,应该直接针对 Kerberos 端点进行身份验证。
    • 再次感谢。更改为使用 Promptbehavior.Never 给出“请求的资源需要用户身份验证。”。 Promptbehavior.Auto 弹出 Windows 安全登录,但登录后,Adal 失败并显示“由于语法无效,服务器无法处理请求”。我怀疑我的 ADFS 配置可能已关闭,这是我第一次设置它。
    • 使用 Fiddler 我还注意到 adal 使用 Mozilla/4.0 作为对我的 ADFS 上的 oauth2 端点的 http 请求的用户代理。这可能是问题吗?有没有办法改变它以使用 IE(支持 WIA)?
    • 在纠正了 ADFS 的错误 SPN 并将我的 ADFS 服务器添加到 IE 中受信任的 Intranet 站点列表之后,我似乎可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 2015-08-31
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多