проверять сгенерированный Owin токен в коде без разрешения на использование - PullRequest
0 голосов
/ 27 марта 2020

Я использую код Microsoft.Owin для генерации токенов. Пользователь может получить токен с именем пользователя и паролем после проверки. Я хочу, чтобы в запросе пользователь передавал тот же токен в json запросе. Я не хочу использовать [Авторизовать] . Есть ли шанс получить сгенерированный токен. Ниже мой код.

public void ConfigureOAuth(IAppBuilder app)
        {
            OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
            {
                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(7),
                Provider = new CustomAuthorizationServerProvider()
            };

            // Token Generation
            app.UseOAuthAuthorizationServer(OAuthServerOptions);
            app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());    
        }

public class CustomAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        AuthRepository authRepository = new AuthRepository();
        bool isValid = authRepository.ValidateUser(context.UserName, context.Password);

        if (!isValid)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
        //identity.AddClaim(new Claim(ClaimTypes.Role, "User"));
        //var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
        //context.Validated(ticket);

        context.Validated(identity);
    }
...