Owin Security Keycloak ВХОД Веб-формы - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть проект Web Forms (.net 4.5), и я пытаюсь включить аутентификацию на внешних серверах с помощью Owin.Security.Keycloak-3.

1: Скачал и установил пакеты слепков.2: Создан класс startup.cs 3: Я добавил ключи в Web.Config 4: Я добавил функцию входа в систему

У меня есть одна проблема, когда вы пытаетесь войти, Owin не перенаправляет вас на внешний входpage.

Я могу принудительно выполнить это с помощью простого перенаправления, но класс Entity все время пуст, я хочу войти в систему, перенаправить в свой проект и получить User.Identity.Name.

Запуск.cs: ​​

public class Startup
{
    const string persistentAuthType = CookieAuthenticationDefaults.AuthenticationType;
    public void Configuration(IAppBuilder app)
    {

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = persistentAuthType
        });
        app.SetDefaultSignInAsAuthenticationType(persistentAuthType);
        app.UseKeycloakAuthentication(new KeycloakAuthenticationOptions
        {
            Realm = WebConfigurationManager.AppSettings["RealmId"],
            ClientId = WebConfigurationManager.AppSettings["ClientId"],
            ClientSecret = WebConfigurationManager.AppSettings["ClientSecret"],
            KeycloakUrl = WebConfigurationManager.AppSettings["Authority"],
            AuthenticationType = persistentAuthType,
            SignInAsAuthenticationType = persistentAuthType,
            AllowUnsignedTokens = false,
            DisableIssuerSigningKeyValidation = false,
            DisableIssuerValidation = false,
            DisableAudienceValidation = false,
            TokenClockSkew = TimeSpan.FromSeconds(2)
        });

Web.Config:

С ключами все в порядке, у меня один и тот же проект в MVC, и он работает.

Моя функция входа в систему:

        var claims = new List<Claim>();
        claims.Add(new Claim(ClaimTypes.Name, ""));
        claims.Add(new Claim(ClaimTypes.Email, ""));            

        var claimsIdentity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, claimsIdentity);
        HttpContext.Current.GetOwinContext().Authentication.User = new ClaimsPrincipal(AuthenticationManager.AuthenticationResponseGrant.Principal);
        HttpContext.Current.User = new ClaimsPrincipal(AuthenticationManager.AuthenticationResponseGrant.Principal);
        HttpContext.Current.GetOwinContext().Authentication.SignIn(claimsIdentity);
...