ADFS ADAL 当前用户 windows 服务

ADFS ADAL current user windows service

我正在尝试使用 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());

我们使用的版本是:

根据 this article.

,ADFS 3.0 仅支持通过网络 API 授予授权码

看看那个post任何问题。