Я потратил немало времени на то, чтобы заставить приложение WebApi использовать модель проверки подлинности Owin, поскольку я хочу использовать все методы входа в социальные сети. Моя непосредственная проблема заключается в понимании того, что я делаю неправильно в отношении аутентификации вызывающего пользователя с набором токенов-носителей.Текущий директор не установлен при использовании Owin JwtBearerAuthentication и OAuthAuthorizationServer
Мои Startup.Auth была подрезают только следующее:
OAuthManager.OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
OAuthManager.OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/oauth/token"),
AuthorizeEndpointPath = new PathString("/oauth/externallogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromHours(1),
AccessTokenFormat = new MyJwtFormat(),
Provider = new MyOAuthServerProvider(),
};
app.UseOAuthAuthorizationServer(OAuthManager.OAuthServerOptions);
app.UseJwtBearerAuthentication(new MyJwtBearerOptions());
MyOAuthServerProvider выглядит следующим образом:
public class OAuthServerProvider : OAuthAuthorizationServerProvider
{
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var result = base.GrantResourceOwnerCredentials(context);
return result;
}
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
return Task.FromResult(true);
}
}
Вопрос 1 является код выше всего, что я требую при вызове службы с маркером-носителем, установленным в заголовке авторизации? Является ли это правильным местом для размещения этого Jwt? Значок должен иметь форму «Bearer ey .....» и т. Д. Я считаю.
Вопрос 2 должен ли вызывающий абонент помещать токен носителя в заголовок «Авторизация» в вызове или в другом месте?
Вопрос 3 почему с вышеуказанным кодом на месте мой OAuthServerProvider никогда не попадает ни в один из методов? Что делает систему проверки подлинности Owin: «Подождите минуту, у нас есть заголовок« Авторизация », поэтому я должен обработать это« что это такое, что мой клиент должен делать по-другому?
Возможно ли, что мой WebApiConfig расстраивает Owin OAuth, возможно? Я установил следующее:
config.SuppressDefaultHostAuthentication();
Хотя я не уверен, я понимаю, что это значит ...
Я пытаюсь проверить выше, используя интеграционный тест, который выполняет следующие действия:
- создает пользователю
- журналов в качестве этого пользователя (правильного прием маркеров Bearer)
- делает вызов с проверкой подлинности Податель лексемы установлено на «Aut (аутентификация не установлена в текущем принципе, HttpContext или OwinContext)
Пожалуйста, задавайте мне вопросы для уточнения, это требует меня много времени! Большое спасибо за любую помощь.