【发布时间】:2015-09-09 12:41:45
【问题描述】:
我正在使用 ASP.Net MVC6 开发应用程序,我想使用不记名令牌实现 OAuth 2 身份验证。我找不到任何关于这是否可能的可靠信息。谁能指出我正确的方向?
【问题讨论】:
-
看到这个post,好像他们没有包含它。
标签: asp.net oauth-2.0 asp.net-core-mvc
我正在使用 ASP.Net MVC6 开发应用程序,我想使用不记名令牌实现 OAuth 2 身份验证。我找不到任何关于这是否可能的可靠信息。谁能指出我正确的方向?
【问题讨论】:
标签: asp.net oauth-2.0 asp.net-core-mvc
TL;DR:微软为 ASP.NET Core 开发的官方包只支持 OAuth2 不记名令牌验证。
这意味着……
...您将能够使用由外部身份提供者(如 Azure Active Directory)通过 Microsoft.AspNetCore.Authentication.JwtBearer 包颁发的不记名令牌来验证您的用户:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthentication = true,
Audience = "http://localhost:50000/",
// Authority is only useful if your JWT tokens
// are issued by an OpenID Connect server.
Authority = "[OpenID Connect provider address]",
// If you don't use an OpenID Connect server, you have to manually update the
// token validation parameters with the issuer's signing key.
TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKey = new X509SecurityKey(certificate)
}
});
也就是说,现在仅支持 JWT 令牌 OTB:Katana 3 附带的 OAuth2 不记名中间件用于原生支持由 OAuth2 授权服务器生成的不透明令牌,但此支持已被删除。
幸运的是,存在替代方案。我个人正在开发一个基于 Katana 附带的 OAuth2 服务器的 OpenID Connect 服务器中间件,它提供了相同的低级体验:https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server
有关更多信息,您可以查看此 SO 答案:Configure the authorization server endpoint
【讨论】:
OAuthAuthorizationServerMiddleware。