У меня есть сервер 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 веб-форм для аутентификации пользователя в нем.
Заранее спасибо за помощь.