У меня настроена IS4, работающая в качестве федеративного шлюза до Azure AD. Все работало нормально, пока что-то не произошло, и я больше не получаю куки от Azure AD. Сервер настроен следующим образом:
IdentityModelEventSource.ShowPII = true; //Add this line
services.AddIdentityServer(options =>
{
options.Events.RaiseErrorEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseInformationEvents = true;
options.Events.RaiseSuccessEvents = true;
options.PublicOrigin = settings.PublicOrigin;
options.Authentication = new AuthenticationOptions()
{
CookieLifetime = TimeSpan.FromHours(1), // ID server cookie timeout set to 10 hours
CookieSlidingExpiration = true
,
};
})
.AddInMemoryApiResources(Config.GetApis())
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryClients(Config.GetClients())
.AddDeveloperSigningCredential(persistKey: false)
.AddCustomUserStore()
.AddProfileService<ProfileService>();
services
.AddAuthentication(options =>
{
})
.AddOpenIdConnect("aad", "Sign-in with Azure AD", options => Configuration.Bind("AzureAd", options))
.AddCookie()
.AddLocalApi(options => options.ExpectedScope = "api");
services.Configure<OpenIdConnectOptions>("aad", options =>
{
options.Scope.Add("openid");
options.Scope.Add("profile");
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.ResponseType = "id_token";
});
// preserve OIDC state in cache (solves problems with AAD and URL lenghts)
services.AddOidcStateDataFormatterCache("aad");
Клиент выглядит следующим образом:
new Client
{
ClientId = "implicit",
ClientName = "Implicit Client",
AllowAccessTokensViaBrowser = true,
RequireConsent = false,
RedirectUris = { "https://notused" },
PostLogoutRedirectUris = { "https://notused" },
AccessTokenType = AccessTokenType.Jwt,
AccessTokenLifetime = 3600,
AllowedGrantTypes = GrantTypes.Implicit,
EnableLocalLogin=false,
AllowedScopes = {
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email,
"api"},
},
Я получил образцы из Quickstarts и адаптировал их для своих нужд. Все работало нормально, пока не заработало.
Здесь происходит сбой:
result = await HttpContext.AuthenticateAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme);
Поскольку он не находит куки в контексте. Как я могу устранить эту проблему? И когда (при каких условиях) Cookies обычно не присутствуют в контексте? (Учитывая, что они должны быть) Я не использую As pNet Идентичность. Я хочу только внешний вход.