当前位置: 首页 > 知识库问答 >
问题:

ASP.NET核心中的OAuth授权服务

慕鹏
2023-03-14
//Set up our auth server options.
var OAuthServerOptions = new OAuthAuthorizationServerOptions()
            {
                AllowInsecureHttp = true,
                TokenEndpointPath = new PathString("/token"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
                Provider = new SimpleAuthorizationServerProvider()
            };

 // Sets up the token issue endpoint using the options above
 app.UseOAuthAuthorizationServer(OAuthServerOptions);

也许我错过了它,但我正在试图弄清楚如何在ASP.NET核心中实现这一点。我查看了源代码(https://github.com/aspnet/security),但没有看到任何类似的内容。有没有新的方法来完成这一点?我需要创建一个控制器然后自己做吗?

我看到了如何通过中间件来设置OAuth身份验证,但这涉及到从API发出声明的授权部分。

共有1个答案

阎俊英
2023-03-14

编辑(01/28/2021):作为3.0更新的一部分,aspnet.security.openidconnect.server已经合并到OpenIddict中。要开始使用OpenIddict,请访问documentation.OpenIddict.com。

不要浪费时间在ASP.NET核心中寻找OAuthAuthorizationServerMiddleware替代,ASP.NET团队只是决定不移植它:https://github.com/aspnet/security/issues/83

我建议看看aspnet.security.openidconnect.server,这是Katana3附带的OAuth2授权服务器中间件的高级分支:有一个OWIN/Katana3版本和一个支持完整的.NET framework和.NET核心的ASP.NET核心版本。

https://github.com/aspnet-contrib/aspnet.security.openidconnect.server

ASP.NET Core1.x:

app.UseOpenIdConnectServer(options =>
{
    options.AllowInsecureHttp = true;
    options.TokenEndpointPath = new PathString("/token");
    options.AccessTokenLifetime = TimeSpan.FromDays(1);
    options.TokenEndpointPath = "/token";
    options.Provider = new SimpleAuthorizationServerProvider();
});

ASP.NET Core 2.x:

services.AddAuthentication().AddOpenIdConnectServer(options =>
{
    options.AllowInsecureHttp = true;
    options.TokenEndpointPath = new PathString("/token");
    options.AccessTokenLifetime = TimeSpan.FromDays(1);
    options.TokenEndpointPath = "/token";
    options.Provider = new SimpleAuthorizationServerProvider();
});
 类似资料:
  • .NET核心和ASP.NET核心到底有什么区别?

  • 我决定第一次尝试实现微服务架构,而不是单一架构,并遇到了授权问题。在一个整体架构中,当访问挂有[Authorize]属性的控制器时,我只是在头中传递令牌,并对照当前的单个数据库检查它。但是在微服务架构中,每个微服务都有自己的数据库,你如何在访问其他微服务时检查令牌,我听说过API Gateway中的check的实现,但我认为,无论如何,每个微服务都应该有自己的check,因为,如果用户没有被授权,

  • 1.1.1. 智能家居 OAuth 授权 1.1.1. 智能家居 OAuth 授权 交互过程 用户添加驱动, 发起授权过程 Homebase 向驱动调用 OAuth Command 接口, 参数为登录回调页面地址 HTTP 驱动 OAuth Command 返回 Oauth 登陆地址 OAuth URL Homebase 打开浏览器, 跳转到转到 OAuth URL 用户输入用户名和密码, 点击授

  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • 我正在尝试使用Reddit API(https://github.com/reddit-archive/reddit/wiki/OAuth2)在我的ASP。NET Core MVC应用程序,为了获得令牌,我必须使用HTTP基本授权(用户名和密码是客户端id和密码)对URI进行POST。目前我使用的代码是: 然而,这并没有使用授权。如何添加授权?我试图查看< code>HttpClient的文档。P

  • 我想更好地理解隐式授权流和授权代码授权流之间的区别,因为我不确定我目前的理解是否正确。 隐式授权流主要由前端应用程序用于验证用户身份吗? 隐式授权流是否只需要一个client_id、用户名和密码来进行身份验证,换句话说,永远不会发送client_secret? 授权码只是一个短期令牌吗? 将授权码交换为访问令牌后,客户端可以访问用户帐户多长时间?具体地说,如果客户端是一个长时间运行的脚本,那么用户