Я сделал следующую конфигурацию.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddIdentityServer(SetupIdentityServer)
.AddDeveloperSigningCredential()
.AddInMemoryClients(GetClients)
.AddInMemoryIdentityResources(GetIdentities)
.AddInMemoryApiResources(GetApis)
.AddTestUsers(GetUsers);
services.AddAuthentication("TheCookie")
.AddCookie("TheCookie", _ =>
{
_.ExpireTimeSpan = TimeSpan.FromMinutes(1);
_.SlidingExpiration = true;
});
...
}
private static void SetupIdentityServer(IdentityServerOptions options)
{
options.UserInteraction.LoginUrl = "/Security/Credentials";
options.UserInteraction.LoginReturnUrlParameter = "bbb";
options.UserInteraction.CustomRedirectReturnUrlParameter = "aaa";
}
Однако, когда я захожу на страницу, требующую авторизации, я получаю 404, потому что меня перенаправляют на значение по умолчанию / Account / Login"контроллер / действие. Я могу подтвердить, что SetupIdentityServer вызван, потому что там произошел сбой. Тем не менее, URL в браузере остается по умолчанию, а страница возврата - та, к которой я пытаюсь получить доступ.вместо фальшивой настройки выше.
Документы для IdS4 не очень много объясняют, и я не могу понять, что мне не хватает. Я пытался следовать наборукак здесь предлагается .
Я подозреваю, что это связано с моим клиентом, который настроен следующим образом.
private static IEnumerable<Client> GetClients => new[]
{
new Client
{
ClientId = "Website",
ClientName = "The Client",
ClientUri = "http://identityserver.io",
AllowedGrantTypes = GrantTypes.Implicit,
AllowAccessTokensViaBrowser = true,
RedirectUris = {"http://localhost:5000/security/credentials"},
PostLogoutRedirectUris = {"http://localhost:5000/index.html"},
AllowedCorsOrigins = {"http://localhost:5000", "https://localhost:44300"},
AllowedScopes =
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
IdentityServerConstants.StandardScopes.Email,
}
}
};
Насколько я понимаю, гранттип неявный должен использоваться для SPA, в то время как вход в систему в стиле MVC регулируется настройкой по умолчанию и управляется просто указанием его, как я делал в SetupIdentityServer . Я чувствую, что проблемаможет быть где-то там, ноГугл на предмет типа клиентов дал мне больше головной боли, чем ясности.