Solicitar token de acesso com id_token, ADFS 2016 e react-adal
Eu tenho um aplicativo do lado do cliente que estou autenticando com o ADFS e o react-adal e tenho a maioria trabalhando, mas não consigo encontrar uma maneira de solicitar o token de acesso (e, portanto, atualizar o token) com o id_token, que é tudo o que recebo em troca do ADFS.
No momento em que o aplicativo React encaminha o usuário ao ADFS para fazer login, ele autentica o token e desejo poder obter as informações do usuário (Nome, Sobrenome, funções etc ...) do ponto de extremidade / adfs / userinfo, mas precisa do token do portador para fazer isso.
Atualmente, minha função componentWillMount se parece com essa
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
});
}
}
}
O ponto em que estou preso é o segundo método de obtenção de axios, que atinge uma ação do controlador na mesma orige
[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();
}
Claro que a resposta retorna não autorizada. Não consigo encontrar nenhuma informação sobre como obter um token de acesso do id_token ou qualquer maneira de obter um token de acesso do React no front end usando a biblioteca Adal.js. Alguém já passou por isso?
EDIT: a única informação que recebo do id_token está abaix
"userName":"[email protected]",
"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":"[email protected]"
}