Я использую IdentityServer с приложениями ASP.NET Core MVC.
В IdentityServer мой клиент определен так:
new Client
{
ClientId = "admin.client",
ClientName = "Admin Application",
AllowedGrantTypes = GrantTypes.Implicit,
ClientSecrets =
{
new Secret("secret".Sha256())
},
RedirectUris = { "http://localhost:45876/signin-oidc" },
PostLogoutRedirectUris = { "http://localhost:45876/signout-callback-oidc" },
AllowedCorsOrigins = new[] { "http://localhost:45876/" },
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile
},
AllowOfflineAccess = true
}
И клиент регистрируется так:
services.AddAuthentication(
options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect(
"oidc",
options =>
{
options.SignInScheme = "Cookies";
options.Authority = "http://localhost:5001/";
options.RequireHttpsMetadata = false;
options.ClientId = "admin.client";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
});
Моя проблема в том, когда я хочу получить accessToken, который имеет значение null.
Я пытаюсь получить его с помощью этого кода:
var token = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
string accessToken = User.FindFirst("access_token")?.Value;
Оба они возвращают ноль.
Где моя проблема?