Я использую шаблон. Net Core Angular с индивидуальными учетными записями:
dotnet new angular -au individual
И добавляю внешнего провайдера для входа в систему Microsoft таким образом:
services.AddAuthentication()
.AddMicrosoftAccount(config => {
config.ClientId = "***REDACTED***";
config.ClientSecret = "***REDACTED***";
config.SaveTokens = true;
})
.AddIdentityServerJwt();
Затем я создаю страницу с атрибутом [Authorized]
и пытаюсь получить Microsoft access_token
, но она всегда отображается как null
. Вот как создается страница:
Test.cs html
@page
@model TestModel
hi
Access Token
@Model.AccessToken
Идентификационный токен
@Model.IdToken
Тест .cs html .cs
[Authorize]
public class TestModel : PageModel {
private readonly UserManager<ApplicationUser> _userManager;
public string AccessToken;
public string IdToken;
public TestModel(UserManager<ApplicationUser> userManager) {
_userManager = userManager;
}
public async Task OnGetAsync() {
if (!User.Identity.IsAuthenticated) {
return;
}
var user = await _userManager.GetUserAsync(User);
AccessToken = await _userManager.GetAuthenticationTokenAsync(user, "Microsoft", "access_token");
IdToken = await _userManager.GetAuthenticationTokenAsync(user, "Microsoft", "id_token");
}
}
Как уже упоминалось, я всегда получаю null
значения для AccessToken
и IdToken
- что я делаю не так?
PS I также пытался await HttpContext.GetTokenAsync("Microsoft", "access_token")
- он также возвращает null
.