У меня есть клиентское приложение, которое я аутентифицирую с помощью ADFS и response-adal, и у меня большая его часть работает, но не могу найти способ запросить токен доступа (и, следовательно, обновить токен) с id_token, который является всем, что я получаю взамен от ADFS.
В данный момент приложение React перенаправляет пользователя в ADFS для входа в систему, затем аутентифицирует токен, и я хочу получить информацию о пользователе.(Имя, фамилия, роли и т. Д.) Из конечной точки / adfs / userinfo, но для этого нужен токен на предъявителя.
В настоящее время моя функция componentWillMount выглядит следующим образом:
componentWillMount = () => {
axios.get('/home/AuthenticationContext').then((response) => {
this.adalAuthentication = new AdalAuthentication(response.data);
if (this.adalAuthentication.authenticateToken()) { // checks if authenticated with adfs, not app
var error = this.adalAuthentication.Instance.getLoginError();
if (error === "") {
axios({
method: 'get',
url: '/identity/completeLogin/' + this.adalAuthentication.Instance.getCachedToken(this.adalAuthentication.Instance.config.clientId)
}).then((response) => { console.log(response) })
this.setState({
loggedIn: true
});
}
else {
this.setState({
error: error
});
}
}
}
Точка, в которой я застрял, - это второй метод get axios, который воздействует на действие контроллера на том же источнике.
[HttpGet("completeLogin/{id_token}")]
public async Task<IActionResult> CompleteLogin(string id_token)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer" + id_token);
var response = await client.GetAsync("https://adfs.domain/adfs/userinfo");
return View();
}
Конечно, ответ возвращается неавторизованным.Я не могу найти никакой информации о том, как получить токен доступа из id_token или о каком-либо способе получения токена доступа из React во внешнем интерфейсе с помощью библиотеки Adal.js. Кто-нибудь прошел через это?
РЕДАКТИРОВАТЬ: единственная информация, которую я получаю от id_token ниже.
"userName":"bob@email.com",
"profile": {
"aud":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"auth_time":1544777683,
"exp":1544793006,
"iat":1544789406,
"iss":"https://adfs.domain/adfs",
"mfa_auth_time":1544777705,
"nonce":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"sid":"x-x-x-xx-xxxxxxxxxx-xxxxxxxx-xxxxxxxxxx-xxxx",
"sub":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"unique_name":"T1234\\bob",
"upn":"bob@email.com"
}