У меня есть проект 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, чтобы авторизовать следующий шаг.