首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用.Net核心的OAuth实现2.0,Swagger

基础概念

OAuth 2.0(开放授权)是一个开放标准,用于授权第三方应用访问用户在另一服务上存储的资源(如照片、视频、联系人列表等),而无需将用户名和密码提供给第三方应用。OAuth 2.0 提供了多种授权流程,以适应不同的使用场景。

Swagger(现称为 OpenAPI Specification)是一种用于描述、生成、消费和可视化 RESTful Web 服务的工具集。它允许开发者设计、构建、文档化和使用 RESTful API。

相关优势

  1. 安全性:OAuth 2.0 提供了一种安全的授权机制,避免了直接传递用户凭证。
  2. 灵活性:支持多种授权流程,适用于不同的应用场景。
  3. 易用性:Swagger 提供了交互式的 API 文档,便于开发者理解和使用 API。

类型

OAuth 2.0 的授权类型包括:

  • 授权码流程(Authorization Code Grant):适用于有服务器端的应用。
  • 隐式流程(Implicit Grant):适用于客户端应用,如 JavaScript 应用。
  • 资源所有者密码凭据流程(Resource Owner Password Credentials Grant):适用于受信任的应用。
  • 客户端凭据流程(Client Credentials Grant):适用于没有用户参与的应用间通信。

应用场景

  • Web 应用:用户通过浏览器访问第三方应用,第三方应用通过 OAuth 2.0 获取授权码,然后获取访问令牌。
  • 移动应用:用户通过移动应用登录,应用通过 OAuth 2.0 获取访问令牌。
  • 单页应用(SPA):通过隐式流程获取访问令牌。

示例代码

以下是一个使用 .NET Core 实现 OAuth 2.0 授权码流程的示例:

安装依赖

代码语言:txt
复制
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
dotnet add package Swashbuckle.AspNetCore

配置授权服务

代码语言:txt
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = "OAuth2";
    })
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:SecretKey"]))
        };
    })
    .AddOAuth("OAuth2", options =>
    {
        options.ClientId = Configuration["OAuth2:ClientId"];
        options.ClientSecret = Configuration["OAuth2:ClientSecret"];
        options.AuthorizationEndpoint = "https://authorization-server.com/oauth/authorize";
        options.TokenEndpoint = "https://authorization-server.com/oauth/token";
        options.UserInformationEndpoint = "https://authorization-server.com/userinfo";

        options.CallbackPath = new PathString("/signin-oauth2");
        options.SaveTokens = true;
    });

    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
    });
}

配置 Swagger

代码语言:txt
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"));
    }

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

参考链接

通过以上配置和示例代码,你可以实现一个基于 .NET Core 的 OAuth 2.0 授权码流程,并使用 Swagger 进行 API 文档的生成和展示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET WebApi 基于OAuth2.0实现Token签名认证

今天阿笨给大家带来另外一种解决方案《ASP.NET WebApi 基于OAuth2.0实现Token签名认证》如果您对本次分享课程感兴趣的话,那么请跟着阿笨一起学习吧。...2)、掌握.NETOAuth2.0 密码模式(resource owner password credentials)实战项目运用。...4)、ASP.NET WebAPI自定义HTTP参数绑定支持多参数POST请求。(强烈推荐) 5)、ASP.NET WebApi 基于OAuth2.0实现Token签名认证。...废话不多说,直接上干货,我们不生产干货,我们只是干货搬运 二、OAuth2.0几种授权模式和场景应用 2.1、什么是OAuth2.0 2.2、OAuth2.0几种授权类型 2.3、什么场景下会用到...OAuth2.0授权 三、WebApi基于OAuth2.0实现Token签名认证原理讲解 四、WebApi 基于OAuth2.0实现Token签名实战演练分享 ?

2.8K30
  • oauth2.0学习与使用

    4.对于服务提供者:围绕自身进行开发,增加用户粘性 目前oauth和版本是2.0oauth2.0,而且不向下兼容。本文章主要针对oauth2.0进行讲解。...下面就介绍一下oauth2.0获取授权几种方式。 对于一个应用程序来说,如果它想要使用OAuth,那么首先它要在服务提供商那里注册。...只有应用程序和服务提供商两者可知 授权模式 oauth2.0提供了四种授权模式,开发者可以根据自己业务情况自由选择。...使用场景 授权码模式是最常见一种授权模式,在oauth2.0内是最安全和最完善。 适用于所有有Server端应用,如Web站点、有Server端手机客户端。 可以得到较长期限授权。...使用场景: 适用于所有无Server端配合应用 如手机/桌面客户端程序、浏览器插件。 基于JavaScript等脚本客户端脚本语言实现应用。

    83520

    使用OAuth 2.0访问谷歌API

    使用OAuth 2.0访问谷歌API 谷歌API使用OAuth 2.0协议进行身份验证和授权。谷歌支持常见OAuth 2.0场景,如那些Web服务器,安装,和客户端应用程序。...对于使用OAuth 2.0与谷歌互动演示(包括利用自己客户端证书选项),实验用OAuth 2.0游乐场。...该页面提供OAuth 2.0用户授权方案概述,谷歌支持,并提供链接到更详细内容。有关使用OAuth 2.0认证详细信息,请参阅ID连接。...注: 由于得到执行正确安全隐患,我们强烈建议您与谷歌OAuth 2.0端点交互时使用OAuth 2.0库。它是利用他人提供精心调试代码最佳实践,这将有助于保护您和您用户。...方案 Web服务器应用程序 该谷歌OAuth 2.0端点支持Web服务器应用程序使用语言和框架,如PHP,Java和Python和Ruby,和ASP.NET

    4.5K10

    聊聊 OAuth 2.0 token expire_in 使用

    问题背景 有同学私信问了这样问题,访问 pig4cloud 演示环境 查看登录请求 network 返回报文如下: { "access_token":"16d35799-9cbb-4c23...源码剖析 我们来看下 oauth2 令牌方法机制,如果客户端 配置 validitySeconds (令牌有效期) 大于 0 会返回当前令牌有效时间 expires_in 参数, OAuth2AccessToken...我们先来看下oauth2 协议规范 HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache...refresh_token(可选)刷新令牌,在访问令牌过期后,可使用此令牌刷新。 scope(可选)如果用户授予范围与应用程序请求范围相同,则此参数为可选。...所以此处 spring security oauth2 处理并不符合协议规范 emmm 。

    1.6K10

    聊聊 OAuth 2.0 token expire_in 使用

    问题背景 有同学私信问了这样问题,访问 pig4cloud 演示环境 查看登录请求 network 返回报文如下: { "access_token":"16d35799-9cbb-4c23-...源码剖析 我们来看下 oauth2 令牌方法机制,如果客户端 配置 validitySeconds (令牌有效期) 大于 0 会返回当前令牌有效时间 expires_in 参数, OAuth2AccessToken...我们先来看下oauth2 协议规范 HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache...refresh_token(可选)刷新令牌,在访问令牌过期后,可使用此令牌刷新。 scope(可选)如果用户授予范围与应用程序请求范围相同,则此参数为可选。...所以此处 spring security oauth2 处理并不符合协议规范 emmm 。 [20200407144312_LffrNe_Screenshot.jpeg]

    1.5K30

    单点登录实现(基于 OAuth2.0 协议)

    最近放假之后实现了一下单点登录,各种项目都需要账号管理系统,太麻烦了,导致各种项目都咕咕咕,懒得写(划掉) OAuth 2.0 协议(本文简称 OAuth)是一种三方授权协议,目前大部分第三方登录与授权都是基于该协议标准或改进实现...OAuth 1.0 标准在 2007 年发布,2.0 标准则在 2011 年发布,其中 2.0 标准取消所有 Token 加密过程,并简化了授权流程,但因强制使用 HTTPS 协议,被认为安全性高于...访问令牌一般时间较短,使用刷新令牌重新换取访问令牌,可以一定程度上减少对授权服务器和资源所有者负担 回调地址:OAuth2.0 是一类基于回调授权协议,以 302 重定向形式,可以一定程度上简化客户端操作...使用文档为准 访问 https://account.lolinya.net/ ,按照流程 登录 / 注册 账号 在应用管理中,选择创建应用,在弹出模态框中,输入新应用名称。...在网络传输过程中,TLS 拥有认证性、机密性、完整性以及重放保护,TLS 基本工作方式是为客户端使用非对称加密与服务器进行通信,实现身份验证并协商对称加密使用密钥,对称加密算法采用协商密钥对信息以及信息摘要进行加密通信

    71610

    OAuth2.0认证流程是如何实现

    很显然,腾讯是不会这么干,而这种登录方式实现就是我们这篇文章中要给大家介绍OAuth2.0认证方式。...在接下来内容中,码农哥会先给大家具体介绍下OAuth2.0基本原理,然后再通过Spring Boot实现一套遵循OAuth2.0规范SSO单点登录系统!...什么是OAuth2.0OAuth2.0是一种允许第三方应用程序使用资源所有者凭据获得对资源有限访问权限一种授权协议。...OAuth2.0协议流程 在了解了OAuth2.0协议基本概念后,接下来让我们一起以程序员视角(NB点叫法又叫上帝视角)来分析下OAuth2.0运行流程。...下期预告 本篇文章初衷是想通过总结OAuth2.0协议流程,来基于Spring Boot集成spring-security-oauth2包实现一套基于OAuth2.0授权码模式单点登录系统,以此来解决公司面临单点登录实际需求

    2.2K30

    【 .NET Core 3.0 】框架之三 || swagger使用

    一、为什么使用Swagger 上文中已经说到,单纯项目接口在前后端开发人员使用是特别不舒服,那所有要推荐一个,既方便又美观接口文档说明框架,当当当,就是Swagger,随着互联网技术发展,现在网站架构基本都由原来后端渲染...前端和后端唯一联系,变成了API接口;API文档变成了前后端开发人员联系纽带,变得越来越重要,swagger就是一款让你更好书写API文档框架。...书写API文档工具有很多,但是能称之为“框架”,估计也只有swagger了。...二、配置Swagger服务 1、引用Nuget包 下面开始引入swagger插件 方法有两个: 1)可以去swagger官网或github上下载源码,然后将源码(一个类库)引入自己项目; 2)直接利用...新建一个.net core 类库Blog.Core.Model,注意是 .net core类库,或者使用标准库也是可以

    90540

    组件分享之后端组件——一个Go Swagger 2.0 实现组件go-swagger

    组件分享之后端组件——一个Go Swagger 2.0 实现组件go-swagger 背景 近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见组件进行再次整理一下,形成标准化组件专题,...组件基本信息 组件:go-swagger 开源协议:Apache-2.0 License 内容 本节我们分享一个Go Swagger 2.0 实现组件go-swagger 特征 go-swagger...,包括多态性 从带注释 go 代码生成一个 swagger 规范 使用 swagger 规范其他工具 强大自定义功能,带有供应商扩展和可自定义模板 我们代码生成重点是生成惯用、快速代码,...功能描述 序列化兼容 swagger yaml 或 json 对象模型 使用 swagger 工具 为任何 swagger 规范文件提供 swagger UI 灵活代码生成,带有可定制模板...一个类型化 JSON Schema 实现,支持 Draft 4 大部分特性 扩展字符串和数字格式:strfmt 使用 JSON、转换数据类型和指针实用程序:swag 一个 jsonschema

    79620

    Oauth2.0实现单点登录原理流程,这次总该懂了!

    单点登录是多域名企业站点流行登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录原理流程。同时总结了权限控制实现方案,及其在微服务架构中应用。...2 OAuth2 认证授权原理流程 2.1 生活实例【★★重点★★】 为了直观理解 OAuth2.0 原理流程,我们假设这样一个生活场景: (1)档案局A(客户端 / Client):以“档案局ID...2.3 SSO 工作流程 至此,就不难理解 OAuth 2.0 认证/授权流程,此处不再赘述。请拿下图对照“2.1 生活实例”一节来理解。...2.4 OAuth2.0 进阶 https://tools.ietf.org/html/rfc6749 https://tools.ietf.org/html/rfc6750 https://blog.csdn.net...): 应用直接都是受信任(都是由一家公司开发,本例子使用) Client Credentials: 用在应用API访问。

    4.1K40

    使用Swagger生成ASP.NET Web API文档

    在本文中,我将介绍一些可以为ASP.NET Web API生成文档方法。...入门 关于如何使用Swagger为ASP.NET Web API生成文档已经写了不止两篇文章(还有一个叫做SwashbuckleNuGet包,你可以很容易地集成它),但是我需要一些动态东西 - 事实上...幸运是,有一个很赞工具集Swagger,称为Swagger codegen,它生成客户端代码来使用API,对于我来说 - 生成静态HTML能力。...不幸是,我找不到Swagger Codegen ,所以我咬一咬牙,决定使用Maven和最新JDK, 从源代码编译Java二进制文件。...打开命令提示符并浏览到以下位置: C:\Tools\swagger-codegen-master\ 要为你API生成静态HTML文档,请使用以下语法: java -jar modules/swagger-codegen-cli

    3.4K00

    oauth2.0实现sso单点登录方式和相关代码

    oauth2.0实现sso单点登录方式和相关代码 SSO介绍 什么是SSO 百科:SSO英文全称Single Sign On,单点登录。...CAS协议中概念介绍 SSO单点登录只是一个方案,而目前市面上最流行单端登录系统是由耶鲁大学开发CAS系统,而由其实现CAS协议,也成为目前SSO协议中既定协议,下文中单点登录协议及结构,均为...granting cookie,存储用户票据cookie,即用户登录凭证最终映射cookies CAS核心协议介绍 ?...image.png 以上是oauth单点登录流程,下面我们来看下应该如何配置单点登录: 继承了WebSecurityConfigurerAdapter类上加@EnableOAuth2Sso注解来表示支持单点登录...accept multiple beans, or using @Qualifier to identify the bean that should be consumed 这个是security找不到使用哪个类报错问题

    2.2K20

    详细介绍OAuth2.0实现和SpringSecurity整合应用

    一、OAuth2.0介绍 GitHub地址案例代码地址 1.概念说明   先说OAuthOAuth是Open Authorization简写。   ...OAuth2.0OAuth协议延续版本,但不向前兼容(即完全废止了OAuth1.0)。 2.使用场景   假设,A网站是一个打印照片网站,B网站是一个存储照片网站,二者原本毫无关联。...但SpringSecurityOAuth2也是可以实现单点登录!   总结一句:SpringSecurityOAuth2可以做服务之间资源共享,也可以实现单点登录!...使用场景授权码模式是OAuth2中最安全最完善一种模式,应用场景最广泛,可以实现服务之间调用,常见微信,QQ等第三方登录也可采用这种方式实现。...二、OAuth2.0实战案例   本案例同样通过maven聚合工程来实现。 1.创建父工程 ?

    7.3K22

    ASP.NET2.0 ObjectDataSource使用详解

    这是因为GridView 和其他数据绑定控件调用 Update 操作自动功能需依赖此命名约定才能工作。参数命名预期应与 SelectCommand 返回关联字段值相同。...使用此命名约定使得数据绑定控件传递给数据源值与 SQL Update 语句中参数相对应成为可能。...此默认命名约定使用假设 Keys 和 Values 字典内容相互排斥 — 即用户能够在数据绑定控件处于编辑模式时更新字段值命名应该与用于匹配要更新字段值(对于 SqlDataSource,...虽然键字段为只读情况很普遍,但是存在一些有效方案,其中您将希望能够更新同时还用于匹配要更新数据行字段。...例如,如果我们将Products数据库ProductID列在设计表格结构时设置为nvarchar,它存放是图书ISDN编号,该编号并不是递增,因此在运行时,您可以更改ProductID只,前提是主要不重复即可

    57710

    Oauth2.0实现单点登录原理流程,这次总该懂了!

    OAuth2.0 进阶 3 基于 SpringBoot 实现认证/授权 3.1 授权服务器(Authorization Server) 3.2 客户端(Client, 业务网站) 3.3 用户权限控制...本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录原理流程。同时总结了权限控制实现方案,及其在微服务架构中应用。...项目地址:https://github.com/YunaiV/ruoyi-vue-pro 2 OAuth2 认证授权原理流程 2.1 生活实例【★★重点★★】 为了直观理解 OAuth2.0 原理流程...2.4 OAuth2.0 进阶 https://tools.ietf.org/html/rfc6749 https://tools.ietf.org/html/rfc6750 https://blog.csdn.net...): 应用直接都是受信任(都是由一家公司开发,本例子使用) Client Credentials: 用在应用API访问。

    1.7K30

    ASP.NET Core 2.0使用Redis——基于CSRedis实现

    关于在ASP.NET Core 2.0使用Redis问题,目前StackExchange.Redis已经支持.Net Core 2.0了,而微软提供Microsoft.Extensions.Caching.Redis.Core...方法,也是对StackExchange.Redis一种官方封装,是基于StackExchange.Redis,但是大家反映StackExchange.Redis在.Net Core下高并发容易出现死锁问题...本例是基于CSRedis来实现,CSRedis 是国外大神写,经过少量修改,现已支持 .NETCore 使用方法,先新建一个Redis缓存类库,我这里命名为:Biz126.RedisCache,在该类库下新增一个名为...RedisHelperRedis帮助类: namespace Biz126.RedisCache { public class RedisHelper : CSRedis.QuickHelperBase...属性,也需要对应修改,换成IConfigurationRoot类型,就可以了: public IConfigurationRoot Configuration { get; } 以上。

    4.9K20

    【壹刊】Azure AD(二)调用受Microsoft 标识平台保护 ASP.NET Core Web API (上)

    OAuth 2.0致力于简化客户端开发人员工作,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定授权流程。...也就是说 OAuth 2.0 是用来进行授权   3,OpenID Connect 是基于OAuth 协议简单身份层。...OpenID Connect执行许多与OpenID 2.0相同任务,但是这样做方式是API友好,并且可由本机和移动应用程序使用,OpenID Connect定义了用于可靠签名和加密可选机制。...OAuth 1.0a和OpenID 2.0集成需要扩展,而在OpenID Connect中,OAuth 2.0功能与协议本身集成在一起。...三,结尾 今天文章大概介绍了如果在我们项目中集成Azure AD,以及如果在 Swagger使用隐士授权模式来访问Api资源, 今天,就先分享到这里,上面演示是如果在Swagger使用隐式访问模式访问受保护资源

    1.9K40
    领券