WebApi2 с токеном на предъявителя и аутентификацией в Facebook.Значение по умолчанию для SignInAsAuthenticationType не найдено в свойствах IAppBuilder - PullRequest
0 голосов
/ 10 декабря 2018

После настройки проекта Web API 2 с Bearer Token OAuth все работало нормально.Мне удается получить токен через / Token.Когда я добавил аутентификацию Facebook, хотя он начал запрашивать следующее: «Значение по умолчанию для SignInAsAuthenticationType не найдено в IAppBuilder Свойствах».ошибка.Я заверил, что добавил для аутентификации токена и Facebook тип SignInAsAuthentication, и это продолжается.Где я не прав?

public void ConfigureAuth(IAppBuilder app)
    {
        _dataProtectionProvider = app.GetDataProtectionProvider();
        IUnityContainer container = UnityBootstrapper.Container;
        container.RegisterInstance(DataProtectionProvider);

        BootstrapperUnityResolver dependencyResolver = new BootstrapperUnityResolver(container);

        // Configure the db context and user manager to use a single instance per request
        app.CreatePerOwinContext(() => ApplicationDbContext.Create());
        app.CreatePerOwinContext(() => (ApplicationUserManager)dependencyResolver.GetService(typeof(ApplicationUserManager)));
        app.CreatePerOwinContext(() => (ApplicationSignInManager)dependencyResolver.GetService(typeof(ApplicationSignInManager)));

        PublicClientId = "self";
        OAuthServerOptions = new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/Token"),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            Provider = new ApplicationOAuthProvider(PublicClientId),
            AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30)
        };
        app.SetDefaultSignInAsAuthenticationType(OAuthDefaults.AuthenticationType);

        //app.UseOAuthBearerTokens(OAuthServerOptions);

        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        OAuthAuthenticationOptions = new OAuthBearerAuthenticationOptions
        {
            Provider = new OAuthBearerAuthenticationProvider()
        };
        app.UseOAuthBearerAuthentication(OAuthAuthenticationOptions);

        var facebookAuthenticationOptions = new FacebookAuthenticationOptions();
        facebookAuthenticationOptions.AppId = "***";
        facebookAuthenticationOptions.AppSecret = "*****";
        facebookAuthenticationOptions.Provider = new FacebookAuthenticationProvider()
        {
            OnAuthenticated = async ctx =>
            {
                var token = ctx.AccessToken;

                var id = ctx.Id;
                var email = ctx.User["email"];

                ctx.Identity.AddClaim(new Claim("urn:myWebSite:AuthorityId", "1", ClaimValueTypes.String, "Facebook"));

                if (id != null)
                    ctx.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, id.ToString(), ClaimValueTypes.String, "Facebook"));
                if (email != null)
                    ctx.Identity.AddClaim(new Claim(ClaimTypes.Email, email.ToString(), ClaimValueTypes.String, "Facebook"));

                ctx.Identity.AddClaim(new Claim("fb.token", token));
            }
        };

        facebookAuthenticationOptions.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalBearer;
        app.UseFacebookAuthentication(facebookAuthenticationOptions);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...