【发布时间】:2018-09-26 13:34:25
【问题描述】:
我在前端有一个带有 SPA 应用程序的项目,在后端有一个 ASP.NET WebAPI 2 项目 (.NET 4.6.1),并尝试使用 Auth0 设置身份验证/授权。
我的想法是让 SPA 使用 Auth0 小部件来生成不记名令牌,然后他们将此令牌传递回 WebAPI,在那里将根据它采取授权步骤。
我浏览了 WebAPI 2 的 QuickStart,它基本上在 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 的签名已更改 - 特别是 ‘identifier’ 参数不再是 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 的其他方式?
【问题讨论】:
-
嗨,你找到答案了吗?
-
@MatthewHartz 是的 - 我从 Auth0 支持得到的答案是,这是 MS 软件包的问题,他们没有解决方案/解决方法。我决定迁移到 Core WebAPI...与 Auth0 的集成顺利进行。
标签: c# asp.net-web-api2 auth0