ADFS ADAL当前用户Windows服务

时间:2017-05-26 09:58:40

标签: .net windows-services adal adfs3.0

我正在尝试使用ADFS 3.0和当前用户的凭据对(ASP.net)Web API验证Windows服务(非交互式)。

这是可能的,如果是,下面的方法是否正确?

当作为控制台应用程序运行时,我可以使用显示登录屏幕的AcquireTokenAsync重载成功获取(JWT)令牌,然后该登录屏幕会自动以当前用户身份登录并在没有交互的情况下消失。这显然不适合Windows服务(并且在非交互模式下抛出关于显示UI的错误)。

我们在ADFS服务器Windows日志中收到以下错误:

Encountered error during federation passive request.

Microsoft.IdentityServer.RequestFailedException: MSIS7065: There are no registered protocol handlers on path /adfs/oauth2/token to process the incoming request.
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)

这是从POST到/ adfs / oauth2 / token HTTP / 1.1:

resource=https%3A%2F%2Fadfs-server%2Fapi_name&client_id=983EB4F7-A4D1-4897-A2BD-5D6C268A5813&scope=opened

这导致HTML文档说明发生了错误。

由以下代码生成:

var authenticationContext = new AuthenticationContext("https://adfs-server/adfs", validateAuthority: false); //validate authority can only be true with Azure AD
var tokenResult = await authenticationContext.AcquireTokenAsync("https://adfs-server/api_name", "983EB4F7-A4D1-4897-A2BD-5D6C268A5813", new UserCredential()); //use current login -- this line fails
request.Headers.Add("Authorization", tokenResult.CreateAuthorizationHeader());

我们使用的版本是:

  • ADAL.net(Microsoft.IdentityModel.Clients.ActiveDirectory)3.13.9
  • ADFS 3.0(Windows Server 2012 R2)
  • .net Framework 4.6.2
  • Windows 10(创作者更新 - 1703)

1 个答案:

答案 0 :(得分:0)

根据this article,ADFS 3.0仅支持使用Web API授权代码授权。

看看并发布任何问题。