将ADAL从2.22升级到5.0.5时出错

时间:2019-05-24 07:34:02

标签: azure-active-directory adal

我有一个WPF客户端,它使用ADAL从ADFS获取令牌以调用我们的Web-api。它使用当前登录的Windows用户并针对ADFS进行身份验证,而没有任何登录屏幕或提示。但是,从2.22.302111727升级到5.0.5后,我遇到了使它无法正常工作的问题。我希望进行升级,以便能够在身份验证库中定位.NET Standard。

带有2.22的现有代码为

var ac = new AuthenticationContext(authority, false);
var token = ac.AcquireToken(resourceURI, clientId, new Uri(clientReturnUri), PromptBehavior.Never);

升级到5.0.5时,API稍有变化,我按照acquiring tokens silently using Integrated authentication on Windows (Kerberos)的文档进行操作,

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

这导致异常

  

反序列化类型为Microsoft.IdentyModel.Clients.ActiveDirectory.Internal.Oauth2.TokenResponse的对象时发生错误。遇到意外字符'>'。

这表明返回了一些HTML错误消息。

在ADFS域控制器上的事件日志中,我看到以下内容:

  

Microsoft.IdentityServer.RequestFailedException:MSIS7065:路径/ adfs / oauth2 / token上没有注册的协议处理程序来处理传入请求。

我尝试将代码更改为与我用于2.22的代码更相似:

var ac = new AuthenticationContext(authority, false);
var token = await ac.AcquireTokenAsync(resourceURI,clientId,new Uri(clientReturnUri),new PlatformParameters(PromptBehavior.Never));

这给了我例外

  

基于浏览器的身份验证对话框无法完成。原因:找不到服务器或代理。

但是,通过此代码,我可以在事件日志中看到已成功创建令牌:

  

成功认证了依赖方“ http://schemas.microsoft.com/ws/2006/05/identitymodel/tokens/Kerberos”的类型“ http://XXXXX.XXXXX.com/adfs/services/trust”的令牌。有关呼叫者身份,请参阅具有相同实例ID的审核501。

  

已成功向依赖方“ http://XXXXXX/”的客户端“ XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX”颁发了OAuth访问令牌。请参阅具有相同实例ID的审核500,以获取已发布的索赔。有关呼叫者身份,请参阅具有相同实例ID的审核501。

ADAL使用Kerberos执行身份验证的方式发生了什么变化? 我怎样才能使ADAL 5.0.5成功完成2.22的工作?

0 个答案:

没有答案