Как установить пользовательское значение перенаправления для страницы входа в IdentityService v4? - PullRequest
0 голосов
/ 09 декабря 2018

Я сделал следующую конфигурацию.

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 . Я чувствую, что проблемаможет быть где-то там, ноГугл на предмет типа клиентов дал мне больше головной боли, чем ясности.

...