Cookie Auth также не генерирует токен на предъявителя - PullRequest
0 голосов
/ 20 апреля 2019

Я хочу включить проверку подлинности cookie вместе с токенами на предъявителя в удостоверении asp.net.

У меня это работает, в некоторой степени, но по какой-то причине генерируется cookie, но токен на предъявителя не генерируется вместе с cookie. Это привело к тому, что мне пришлось использовать cookie для аутентификации на уровне API.

Я посмотрел на этот вопрос: Совместное использование токенов на предъявителя и аутентификации cookie и это в некоторой степени помогает, поскольку я правильно заставляю свой API использовать только токены Bearer, но при этом все вызовы API возвращают 401.

В моем Startup.Auth у меня есть следующее:

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Logon"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.  
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie))
            }
        });

        PublicClientId = "self";
        OAuthOptions = new OAuthAuthorizationServerOptions()
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/api/v1/auth/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new ApplicationOAuthProvider(PublicClientId)
        };

        // Token Generation
        app.UseOAuthAuthorizationServer(OAuthOptions);
        app.UseOAuthBearerTokens(OAuthOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

Это прекрасно работает, так как файлы cookie генерируются, и я могу получить токен при вызове / auth / token, но я не получаю ни cookie, ни токен при обычном входе в приложение.

...