Как перенаправить пользователя обратно на настраиваемое действие после входа / выхода из системы в IdentityServer IDP? - PullRequest
0 голосов
/ 25 марта 2020

Я хочу, чтобы IdentityServer4 в качестве IDP возвращался к моим пользовательским действиям после входа в систему и выхода из системы ... как мне этого добиться?

например: http://myclient.com/account/ExternalLoginCallBack, http://myclient.com/account/ExternalLogoutCallBack

я должен использовать oid c События?

Я знаю signin-oid c и signout- callback-oid c является значением по умолчанию return_url в потоке oid c и обрабатывается потоком oid c от имени, но я хочу выполнить некоторые локальные действия после того, как пользователь войдет в систему и выйдет из нее в idp .

Я изменил значение по умолчанию CallbackPath oid c при запуске (в клиенте):

.AddOpenIdConnect("oidc", config =>
 {
  config.CallbackPath = "/account/ExternalLoginCallBack";

, но оно не работает в действии; Я вижу мой return_uri (упомянутый выше) в адресной строке браузера, и IDP POSTing к этому, но я не могу с этим справиться

1 Ответ

1 голос
/ 26 марта 2020

CallbackPath - это путь, по которому сервер будет перенаправлять после аутентификации. Он автоматически обрабатывается самим промежуточным ПО OID C. Нам не нужно создавать / обрабатывать это в нашем приложении, промежуточное ПО будет обрабатывать это.

Если вы хотите перенаправить на указанное действие c после войдите в систему, вы можете вручную установить RedirectUri из AuthenticationProperties:

[HttpGet]
[Route("signin")]
public async Task SignIn()
{
    if (!User.Identity.IsAuthenticated)
    {
        await HttpContext.ChallengeAsync("oidc", new AuthenticationProperties
        {
            RedirectUri = "/YourController/YourAction",
        });
    }
}

Перенаправить на указанное действие c после выхода из системы:

public IActionResult Logout()
{
    return SignOut(new AuthenticationProperties { RedirectUri = "/YourController/YourAction" }, "Cookies", "oidc");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...