У меня есть проект с приложением SPA на интерфейсе и проект ASP.NET WebAPI 2 (.NET 4.6.1) на сервере, и я пытаюсь настроить аутентификацию/авторизацию с помощью Auth0.
Моя идея заключалась в том, чтобы SPA использовала виджет Auth0 для создания токена-носителя, и они передавали этот токен обратно в WebAPI, где на его основе будут предприниматься шаги авторизации.
Я выполнил QuickStart для WebAPI 2, который в основном имеет один важный параметр в Startup.cs:
public void Configuration(IAppBuilder app)
{
var domain = $"https://{ConfigurationManager.AppSettings["Auth0Domain"]}/";
var apiIdentifier = ConfigurationManager.AppSettings["Auth0ApiIdentifier"];
var keyResolver = new OpenIdConnectSigningKeyResolver(domain);
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = apiIdentifier,
ValidIssuer = domain,
IssuerSigningKeyResolver = (token, securityToken, identifier, parameters) => keyResolver.GetSigningKey(identifier)
}
});
// Configure Web API
WebApiConfig.Configure(app);
}
Однако этот образец проекта кажется устаревшим.
Во-первых, он не компилируется, потому что подпись IssuerSigningKeyResolver была изменена — в частности, параметр «идентификатор» больше не имеет тип SecurityKeyIdentifier, а вместо этого является строкой.
Во-вторых, если я просто закомментирую эту строку и попытаюсь запустить ее, я получу исключение:
Could not load type 'System.IdentityModel.DateTimeUtil' from assembly 'System.IdentityModel.Tokens.Jwt, Version=5.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
Версии пакетов проекта:
Auth0.Owin.OpenIdConnectSigningKeyResolver 1.0.0.0
Microsoft.Owin.Security.Jwt 4.0.0.0
Microsoft.IdentityModel.Tokens 5.2.1.0
Мой вопрос: кто-нибудь знает о рабочем примере WebAPI 2 QuickStart или, может быть, о каком-то другом способе использования Auth0 в описанном выше сценарии?