Я застрял в этом вопросе некоторое время, я использую ADAL.js во внешнем интерфейсе для обработки входа в систему и аутентификации.После входа мне нужно получить информацию для пользователя (роли, группы, имя и т. Д.), Однако я не могу получить ничего от конечной точки / adfs / userinfo, кроме 401.
ИтакПока я захожу в систему и получаю обратно id_token и токен доступа (или «adal.access.token.key {guid}» в браузере), который идентичен ключу доступа.Из-за проблемы cors на внешнем интерфейсе я затем отправляю это на внутренний контроллер mvc core 2.2 для вызова / adfs / userinfo, где я получаю 401. Код Javascript ниже
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 для этого, либо, возможно, мне нужно использовать oidcinstead из OAuth / jwt, но яЯ не хочу переписывать много, просто чтобы узнать, что это тоже не работает или есть лучший / лучший способ сделать это.Кто-нибудь имел эту проблему раньше и / или может указать мне правильное направление или может видеть, где я иду не так?
Другие вещи, которые я пробовал;
- попадание в конечную точку adfs / oauth / token (просто возвращается с ошибкой сервера adfs)
- установка авторизации на бэкэнде на
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer" + access_token);
(просто возвращает неверный токен). - Создание метода переднего и внутреннего бэкэнда и использование метода
getCachedToken
в ADAL AuthenticationContext
РЕДАКТИРОВАТЬ: У меня также есть этот вопрос, открытый с немного более конкретнымцель получения токена доступа с токеном id