ASP. Net Веб-формы: как использовать SSO cook ie из ASP. Net Веб-API для аутентификации - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть сервер Keycloak и ASP. Net веб-сервер API. Я могу аутентифицироваться на сервере keycloak автоматически, когда необходима авторизация, и это работает! Я использую пакет nuget «Owin.Security.Keycloak-3» в веб-интерфейсе, чтобы он работал.

Теперь у меня есть приложение ASP. Net для веб-форм, и я Я хочу, чтобы он использовал проект веб-API для идентификации в keycloack, а затем прошел аутентификацию в приложении веб-форм.

Итак, у меня есть этот метод в проекте веб-API:

        [HttpGet]
        public IHttpActionResult ExternalAuthenticate(string returnUrl = "/")
        {
            return new ChallengeResult(returnUrl, Startup.PersistentAuthType, this);
        }

И класс ChallengeResult:

    public class ChallengeResult : IHttpActionResult
    {
        private string _returnUrl;

        public ChallengeResult(string returnUrl, string loginProvider, ApiController controller)
        {
            this._returnUrl = returnUrl;
            this.LoginProvider = loginProvider;
            this.Request = controller.Request;
        }

        public string LoginProvider { get; set; }
        public HttpRequestMessage Request { get; set; }

        public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
        {
            IOwinContext context = this.Request.GetOwinContext();

            context.Authentication.Challenge(new AuthenticationProperties { RedirectUri = this._returnUrl }, this.LoginProvider);

            HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
            {
                RequestMessage = this.Request,
            };

            return Task.FromResult(response);
        }
    }

В передней части проекта веб-форм я называю веб-API следующим образом:

  window.location.replace(api_token + 'api/Account?returnUrl=' + 'https://my-app.com/auth-success');

Это работает немного, пользователь перенаправляется на сервер keycloak, и в проекте web api создается повар ie.

Но я не знаю, что делать в projet веб-форм для аутентификации пользователя в нем.

Заранее спасибо за помощь.

...