ASP.Net MVC6支持OAuth 2承载令牌吗?

3

我正在使用ASP.Net MVC6开发应用程序,想要使用承载令牌实现OAuth2认证。但是我找不到关于是否可以实现的可靠信息,请问有没有人能给我指点方向?


看看这个帖子,似乎他们没有包含它。 - scheien
1个回答

7

TL;DR: 微软为ASP.NET Core开发的官方包只支持OAuth2承载令牌验证。

这意味着...

  1. ... you'll be able to authenticate your users using bearer tokens issued by an external identity provider (like Azure Active Directory) with the Microsoft.AspNetCore.Authentication.JwtBearer package:

    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授权服务器生成的不透明令牌,但该支持已被删除。
你将无法再生成自己的令牌。OAuth2授权服务器已被移除,不会被移植到ASP.NET Core中:ASP.NET Core中的OAuth授权服务
幸运的是,还有其他选择。我个人正在开发基于Katana附带的OAuth2服务器的OpenID Connect服务器中间件,提供相同的低级别体验:https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server 如需更多信息,请参阅此SO答案:配置授权服务器端点

我还有点困惑,我们能生成自己的JWT吗?我正在设计一个Web API,但我不知道该怎么做,因为我想提供身份验证令牌。我不想让用户通过第三方如GitHub登录。 - Alex Justi
使用 ASP.NET 5 原生提供的安全中间件吗?不行。使用第三方服务器可以。 - Kévin Chalet
在开发REST API时,这真是一个很大的不便。我可能最终会设计自己的系统。 - Alex Justi
1
你应该看一下这个示例:https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/blob/vNext/samples/Mvc/Mvc.Server/Startup.cs#L105-L121。它使用了我在答案中提到的项目(OpenIdConnectServerMiddleware),它基本上相当于 ASP.NET 5 中的 OAuthAuthorizationServerMiddleware - Kévin Chalet
@Pinpoint - 知道这有点老了,但我找不到任何解决方案。在你的例子中,“certificate”是在哪里定义的?我有一个字符串base64编码密钥,我曾经使用过,现在我需要一个证书,我不知道如何将我曾经使用的字符串密钥转换为509证书。 - Scott Selby
@ScottSelby certificate 变量是一个 X509Certificate2 实例(你可以从文件中创建),但是还有其他重载支持从程序集的嵌入资源中提取证书 (参见此处) 或从 X509 机器存储中提取证书(最佳选项)。话虽如此,我不确定你的“base64编码密钥”是否是 X509 证书。如果您想生成自己的证书,请查看 https://msdn.microsoft.com/en-us/library/ff699202.aspx。 - Kévin Chalet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接