我已经在这个问题上停留了一段时间,我在前端使用ADAL.js来处理登录和身份验证。登录后,我需要获取用户的信息(角色,组,名称等...),但是我无法从/ adfs / userinfo端点获取除401之外的任何信息。
到目前为止,我已登录用户并获取与访问密钥相同的id_token和访问令牌(或浏览器中的“ adal.access.token.key {guid}”)。由于前端的cors问题,我将其发送到后端mvc core 2.2控制器,以调用/ adfs / userinfo,这是我在其中获取401的地方。
this.adalAuthentication.Instance.acquireToken(this.adalAuthentication.Instance.config.clientId, (error, token) => {
if (error || !token) {
console.log('ADAL Error Occurred: ' + error);
return;
}
axios({
method: 'get',
url: '/identity/completeLogin/' + token,
headers: {
'Authorization': 'Bearer ' + token
}
}).then((response) => { console.log(response.data) });
});
还有控制器动作...
[HttpGet("completeLogin/{access_token}")]
public async Task<HttpResponseMessage> CompleteLogin(string access_token)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("OAuth" + access_token);
var response = await client.GetAsync("https://adfs.server/adfs/userinfo");
response.EnsureSuccessStatusCode();
try
{
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}
catch (Exception e)
{
throw(e);
}
}
在这一点上,我很困惑,我想我要么不能为此使用ADAL,要么可能需要使用oidcin代替OAuth / jwt,但是我不想为了发现它而不得不重写很多东西都不起作用,或者有更好/最佳实践的方法。有没有人遇到过这个问题,并且/或者可以向我指出正确的方向,或者可以看到我要去哪里错了?
我尝试过的其他方法;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer" + access_token);
(只是返回无效的令牌)。getCachedToken
方法编辑:我也有一个this问题,还有一个更具体的目标,即获得带有ID令牌的访问令牌