Можно ли получить токен jwt для текущего приложения, не основанного на другом приложении Azure, или сохранить его в течение всего жизненного цикла входа в систему?
В моем приложении я аутентифицирую своего пользователя в Azureс Оуэном и OpenIdConnect.Аутентификация прошла успешно, и я получил токен от Azure.
В более поздних методах мне нужно передать токен в качестве параметра, поэтому теперь я сохраняю его в переменной сеанса, но срок его действия истекает раньше, и в результате получается пустая переменная.
Теперь я пытаюсь получить токен из Azure с помощью ADAL.
string userObjectId = ((ClaimsIdentity)User.Identity).Claims.FirstOrDefault(c => c.ToString() == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
AuthenticationContext authContext = new AuthenticationContext(ConfigurationManager.AppSettings["ida:AADInstance"] + ConfigurationManager.AppSettings["ida:TenantId"], new TokenCache());
ClientCredential credential = new ClientCredential(ConfigurationManager.AppSettings["ida:ClientId"], "client_secret");
var result = authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["ida:ClientId"], credential).Result.AccessToken;
Это приводит к ошибке:
{"error":"invalid_grant","error_description":"AADSTS50105: Application >
'4337e286-7b84-4377-8843-82ea9504606b' is not assigned to a role for the application '4337e286-7b84-4377-8843-82ea9504606b'}
Для другихприложения, оно настроено с другим приложением, которое имеет разрешения для ресурса, но я не хочу зависеть от другого приложения для получения токена.
У кого-нибудь есть идея?
EDIT
Я следовал предложению @ Jean-MarcPrieur, но в строке
var accounts = await application.GetAccountsAsync();
он не возвращает учетные записи, которые приводят к пустому результату и accessToken.