[英]ADFS single sign on for logged on user not working
我正在尝试将应用程序与在用户上下文中运行的常规.net桌面服务与ADFS和Web API集成在一起。 该用户是域用户,这是常规的AD环境。 该网站的MVC方面与浏览器配合良好。
我在Windows Server 2016的ADAL3(VS2017)上,我引用此链接[ADFS SSO CloudIdentity]能够使用UserCredentialPassword
成功获取令牌并调用我的Web API,我只是按照以下步骤进行操作,并将其更改为异步。
但是,对于我来说,使用登录的凭据位(其中new UserCredential()
应该指示调用以从当前线程获取令牌)根本不起作用,在ADAL 2上,我得到了空指针异常,而在ADAL3上,我得到了
MSIS7065:在路径/ adfs / oauth2 / token上没有注册的协议处理程序来处理传入的请求。
我确实在SO上看到了类似的查询,但是基于我对OP的理解,回落到基于浏览器的行为上。
不希望基于基于浏览器的身份验证(具有Promptbehaviour.never)行为,因为我在客户站点上看到了很多配置问题,即使启用了相关设置,浏览器仍将其假定为互联网站点,并且登录失败。
参考代码
string authority = "https://adfs.domain.com/adfs";
string resourceURI = "https://local.ip:44325";
string clientID = "19cda707-b1bf-48a1-b4ac-a7df00e1a689";
AuthenticationContext ac = new AuthenticationContext(authority, false);
// I expect that the user's credential are picked up here.
AuthenticationResult authResult =
await ac.AcquireTokenAsync(resourceURI, clientID,
new UserCredential());
string authHeader = authResult.CreateAuthorizationHeader();
var client = new HttpClient();
var request = new HttpRequestMessage( HttpMethod.Get,
"https://local.ip:44325/api/values");
request.Headers.TryAddWithoutValidation( "Authorization", authHeader);
var response = await client.SendAsync(request);
string responseString = await response.Content.ReadAsStringAsync();
呼叫在Acquisitiontokenasync中失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.