我有一个引用ADAL.net库的ac#控制台应用程序(Microsoft.IdentityModel.Clients.ActiveDirectory版本2.19.208020213)
控制台应用程序的目的是使用受ADFS保护的HTTP终结点。
ADFS auth的实现如下。
var uc = new UserCredential("user", "password");
var ctx = new AuthenticationContext("https://sts.example.com/adfs", false);
var token = ctx.AcquireToken(ClientResourceUri, ClientId, uc);
Run Code Online (Sandbox Code Playgroud)
对AcquireToken的调用引发异常...
' https://sts.example.com/adfs/ ' 不支持此方法重载
在不使用UserCredential对象的情况下调用AcquireToken,而是提供redirectUri可以工作,但是会引发一个对话框提示输入用户名和密码,这不适合,因为控制台应用程序将在非用户环境中执行...
var redirect = new Uri("https://example.com/arbitaryRedirect");
var token = ctx.AcquireToken(ClientResourceUri, ClientId, redirect);
//dialog is shown
Run Code Online (Sandbox Code Playgroud)
如果我切换到adal.net库的最新Alpha版本(3.6.212041202-alpha),该错误将更加明显...
MSIS9611:授权服务器不支持所请求的'grant_type'。授权服务器仅支持“ authorization_code”或“ refresh_token”作为授予类型。
但是,开采google的收益很少。
实际上可以针对ADFS进行静默身份验证吗?
我会基于基于其他帖子的回答而假设正确的方法是使用WsTrustChannelFactory来正确吗?
如果没有,最好的方法是什么?
小智 5
可以在Windows Server 2016中使用ADAL 3.x和ADFS,使用几乎与您发布的代码相同的代码。较旧版本的ADAL或ADFS的组合将无法使用。或者,您可以使用WS-Trust-很难处理,但可以完成工作。
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |