У меня есть сервер авторизации, который выдает токены JWT, используя OAuth2. Я не создал новую службу ресурсов, которая использует Auth Server для получения токена и аутентификации запроса. На моем сервере ресурсов я пометил контроллер атрибутом Authorize, и у меня проблема в том, что, хотя в моем файле Startup.cs указан URL-адрес службы аутентификации, я все равно получаю код состояния 401 при выполнении вызова на ресурсе Обслуживание. Вопрос в том, как правильно для стороннего поставщика, который имеет учетную запись пользователя в службе аутентификации, предназначенную для аутентификации по вызову API и получения токена? Должны ли они сначала вызвать службу аутентификации для получения токена, а затем вызвать службу ресурсов с токеном в заголовке. Пожалуйста, смотрите код ниже:
Startup.cs
private void ConfigureOAuth(IAppBuilder app)
{
ISettings settings = new Settings();
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { "allowclientId" },
IssuerSecurityKeyProviders = new IIssuerSecurityKeyProvider[]
{
new SymmetricKeyIssuerSecurityKeyProvider("issuerUrl", TextEncodings.Base64Url.Decode("clientSecret"))
}
});
}
BusinessController.cs
[Authorize]
[Route("api/business")]
public class BusinessController
: ApiController
{
private readonly IBusinessService _businessService;
#region Ctor
public BusinessController(IBusinessService businessService)
{
_businessService = businessService;
}
#endregion
/// <summary>
/// Retrieve a list of businesses
/// </summary>
/// <returns>Response</returns>
[HttpGet]
public IHttpActionResult Get()
{
var response = _businessService.Get();
return Ok(response);
}