Добавление аутентификации токена на предъявителя к контроллеру webapi в проекте mvc 4 - PullRequest
0 голосов
/ 10 апреля 2019

Я успешно добавил контроллер webapi и проект MVC4.Я могу позвонить и вернуть данные.Затем я добавил атрибут [Authorize] к контроллеру, чтобы защитить его.

Он работает с аутентификацией cookie, но не аутентификацией токена на предъявителя.Странно, но контроллеры MVC работают с обоими.Вот что у меня в стартапе, я регистрирую оба.

using (IDependencyScope scope = GlobalConfiguration.Configuration.DependencyResolver.BeginScope())
            {
                app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

                app.UseCookieAuthentication(new CookieAuthenticationOptions
                {
                    CookieName = "mycookie.myname",
                    CookieHttpOnly = false
                });

                IOpenIdSettingProvider openIdSettingProvider = scope.GetService<IOpenIdSettingProvider>();

                OpenIdConnectAuthenticationDefinition openIdConnectAuthenticationDefinition = openIdSettingProvider.Resolve().FirstOrDefault();

                app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
                {
                    AllowedAudiences = new List<string>
                    {
                        openIdConnectAuthenticationDefinition.Audience
                    },
                    AuthenticationMode = AuthenticationMode.Active,
                    IssuerSecurityTokenProviders = new List<IIssuerSecurityTokenProvider>
                    {
                        new StaticSecurityTokenProvider(openIdConnectAuthenticationDefinition.Issuer, openIdConnectAuthenticationDefinition.SigningTokens)
                    }
                });

                IConfigurationSource configurationSource = scope.GetService<IConfigurationSource>();

                app.UseOpenIdConnectAuthentication(
                    new OpenIdConnectAuthenticationOptions
                    {
                        ClientId = configurationSource.GetSetting("ClientId"),
                        Authority = configurationSource.GetSetting("BaseAuthorityUri"),
                        Notifications = new OpenIdConnectAuthenticationNotifications
                        {
                            RedirectToIdentityProvider = context =>
                            {
                                context.ProtocolMessage.Prompt = "login";
                                context.ProtocolMessage.RedirectUri = context.Request.Uri.ToString();
                                return Task.CompletedTask;
                            }
                        }
                    });
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...