Как реализовать аутентификацию на основе токенов в asp.net swagger API? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть проект API Swagger и установлен весь необходимый пакет nuget OWIN для аутентификации. Как я могу интегрировать систему входа в систему в Swagger UI? Что такое URL-ссылка API для аутентификации имени пользователя и пароля? Спасибо заранее

Я попытался вызвать класс [MyAuthProvider], который наследует класс [OAuthAuthorizationServerProvider] от контроллера, но он не работает.

// MyAuthProvider class

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


    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        var identity = new ClaimsIdentity(context.Options.AuthenticationType);

        UserRepository repository = new UserRepository();
        var userdata = repository.GetAll().Where(e => e.Username.Contains(context.UserName) && e.Password.Contains(context.Password)).FirstOrDefault();
        if (userdata != null)
        {
            //identity.AddClaim(new Claim(ClaimTypes.Role, userdata.UserRole));
            identity.AddClaim(new Claim(ClaimTypes.Name, userdata.Username));
            context.Validated(identity);
        }
        else
        {
            context.SetError("invalid_grant", "Provided username and password is incorrect");
            context.Rejected();
        }
    }
}

// класс запуска

public class Startup
{
    public void Configuration(IAppBuilder app)
    {

        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

        var myProvider = new MyAuthProvider();
        OAuthAuthorizationServerOptions options = new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
            Provider = myProvider
        };
        app.UseOAuthAuthorizationServer(options);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());


        HttpConfiguration config = new HttpConfiguration();
        WebApiConfig.Register(config);
    }
}

}

Я хочу вызвать этот API со стороны клиента, созданный angular, чтобы авторизовать следующий шаг.

...