oauth

OAuth 2.0详解

时光总嘲笑我的痴心妄想 提交于 2020-08-12 06:50:53
OAuth 2.0详解 概念 :OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如基本消息,照片,联系人列表), 而无需将 用户名 和 密码 提供给第三方应用。 一、应用场景 为了理解OAuth的适用场合,这里举一个使用第三方账户进行登录的例子。 现在一般登陆都会采用 第三方授权 登陆,比较常见就是微信、qq、微博授权登陆。这里以微信授权登陆为例: 现在我在未注册的情况下去访问 A网站 , A网站 为了提高用户体验,可以省去你在这次网站申请注册的步骤,让你通过 微信 授权登陆去拿去你在微信上的基本信息。 问题就在这里,如果拿到 微信用户 基本信息给到 A网站 ,直接给 A网站 我登陆微信的账号密码,那么问题可想而知。 1、这个也太不安全了,我只想给A网站我的在微信上的基本信息,而不是所有信息,通过用户密码可以获取我的所有信息。 2、用户只有修改密码,才能收回赋予"A网站"的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。 3、只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。 OAuth就是为了解决上面这些问题而诞生的。 从上面可以看出主要有三个身份 用户 使用第三方账户登录一个新的网站,对于用户来说就不需要走复杂的注册流程。 第三方平台 (微信) 上面来讲 微信

SpringBoot 整合 oauth2实现 token 认证

ぐ巨炮叔叔 提交于 2020-08-12 06:38:57
参考地址: https://www.jianshu.com/p/19059060036b session和token的区别: session是空间换时间,而token是时间换空间。session占用空间,但是可以管理过期时间,token管理部了过期时间,但是不占用空间. sessionId失效问题和token内包含。 session基于cookie,app请求并没有cookie 。 token更加安全(每次请求都需要带上) Oauth2 密码授权流程 在oauth2协议里,每一个应用都有自己的一个clientId和clientSecret(需要去认证方申请),所以一旦想通过认证,必须要有认证方下发的clientId和secret。 1. pom <!--security--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> </dependency> 2.

Spring Cloud:认证 授权 OAuth2、JWT

北战南征 提交于 2020-08-12 04:54:41
OAuth2 OAuth2是当前授权的行业标准,其重点在于为Web应用程序、桌面应用程序、移动设备以及室内设备的授权流程提供简单的客户端开发方式。它为第三方应用提供对HTTP服务的有限访问,既可以是资源拥有者通过授权允许第三方应用获取HTTP服务,也可以是第三方以自己的名义获取访问权限。 角色 OAuth2中主要分为了4种角色: Resource Owner(资源所有者),是能够对受保护的资源授予访问权限的实体,可以是一个用户,这时会称为终端用户(end-user)。 Resource Server(资源服务器),持有受保护的资源,允许持有访问令牌(Access Token)的请求访问受保护资源。 Client(客户端),持有资源所有者的授权,代表资源所有者对受保护资源进行访问。 Authorization Server(授权服务器),对资源所有者的授权进行认证,成功后向客户端发送访问令牌。 很多时候,资源服务器和授权服务器是合二为一的,在授权交互的时候作为授权服务器,在请求资源交互时作为资源服务器 Resource Server的配置 Resource Server(可以是授权服务器,也可以是其他的资源服务)提供了受OAuth2保护的资源,这些资源为API接口、Html页面、Js文件等.Spring OAuth2提供了实现此保护功能的Spring Security认证过滤器

asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权

时光总嘲笑我的痴心妄想 提交于 2020-08-12 02:42:40
开发了一个公司内部系统,使用asp.net core 3.1。在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据。并且只是几个简单的接口不准备再重新部署一个站点,所以就直接在MVC的项目里面加了一个API区域用来写接口。这时候因为是接口所以就不能用cookie方式进行认证,得加一个jwt认证,采用多种身份验证方案来进行认证授权。 认证授权 身份验证是确定用户身份的过程。 授权是确定用户是否有权访问资源的过程。 在 ASP.NET Core 中,身份验证由 IAuthenticationService 负责,而它供身份验证中间件使用。 身份验证服务会使用已注册的身份验证处理程序来完成与身份验证相关的操作。 认证-->授权 关于认证授权我们要区分认证和授权是两个概念,具体可查看MSDN官方文档也可以搜索其它文章看看,讲的很多。其中包括OAuth 2.0 以及jwt的相关知识都有很多资料并且讲解的很好。 身份认证 身份验证方案由 Startup.ConfigureServices 中的注册身份验证服务指定: 方式是在调用 services.AddAuthentication 后调用方案特定的扩展方法(例如 AddJwtBearer 或 AddCookie)。 这些扩展方法使用 AuthenticationBuilder.AddScheme

ASP.NET CORE3.0 API Swagger+IdentityServer4授权验证

冷暖自知 提交于 2020-08-12 02:25:34
一、配置IdentityServer4服务端 这里介绍两种方法 ①直接创建identityserver4的模板,在模板的基础上修改 ②创建新项目,自己搭建 第一种 参考 我的 identityServer4学习 ,创建一个identityServer4模板后 修改config文件 public static IEnumerable<IdentityResource> GetIdentityResources() { return new IdentityResource[] { new IdentityResources.OpenId(), new IdentityResources.Profile(), }; } /// <summary> /// API信息 /// </summary> /// <returns></returns> public static IEnumerable<ApiResource> GetApis() { return new [] { new ApiResource( " ProjectApiScope " , " Demo API with Swagger " ) }; } /// <summary> /// 客服端信息 /// </summary> /// <returns></returns> public static

.NET WEB API关键过程 思维导图

蓝咒 提交于 2020-08-11 23:03:29
背景说明 近期在去面试的过程中,被问及有关WEB API的一些特性,一时竟不知该如何回答,故根据自己已知的知识,加上网上搜索的,详细列举了一下,期望对WEB API有一个比较开阔和全面的认知。 关键要素 在客户端发送一个请求,到服务端接收并处理请求,然后将数据返回,这样一个看似简单的过程中,究竟有哪些要素是我需要去留心的呢? 我在整理的过程当中,发现了这样一些基本要素,是需要去特别留心: 1. 接口规范 2. 鉴权方式 3. 关键对象 4. 生命周期 5. 接口工具 接口规范 接口规范定义了在API访问的过程中,数据交互约定以什么样的方式进行。下面是我所了解的几种接口规范: 1.1.RESTful 1.1.1.字义解释 ▣ REST(representational state transfer),直译过来是“表述性状态传输”,至于ful,百度翻译是“满满的”、“充满...的”。这里所说的“state”,就是HTTP请求当中的 GET、PUT、POST 、DELETE,表述了对资源的处理意向。 1.1.2.规范详情 ▣ 参考 RESTful 架构详解 1.2.OpenAPI 1.2.1.字义解释 ▣ OpenAPI从字义上解释,是开放API,也就是说是开放给别人看的,所以接口参数具有可阅读性,能够生成可阅读的文档。它也具体到了业务层面的参数定义规范。 1.2.2.广义解释 ▣

Spring Security 原理分析(一)

只愿长相守 提交于 2020-08-11 19:19:04
Spring Security 初始化 在普通的spring mvc 框架中,我们需要 @Configuration @EnableWebSecurity public class MyWebSecurityConfiguration extends WebSecurityConfigurerAdapter 手动添加 EnableWebSecurity 来启动 spring security,不过在Spring Boot中,我们不需要再写该注解。 因为,spring boot自动装配类 WebSecurityEnablerConfiguration 已经帮我们完成了该工作。 @Configuration( proxyBeanMethods = false ) @ConditionalOnBean({WebSecurityConfigurerAdapter.class}) @ConditionalOnMissingBean( name = {"springSecurityFilterChain"} ) @ConditionalOnWebApplication( type = Type.SERVLET ) @EnableWebSecurity public class WebSecurityEnablerConfiguration { public

API 1.1 requesting twitter bearer token using r

谁说我不能喝 提交于 2020-08-11 17:59:57
问题 I have searched this forum and tried several things that seemed relevant, but with no success. If anyone can spot what I'm missing I would be very grateful. I am trying to get a bearer token using application only authorization as explained at https://dev.twitter.com/docs/auth/application-only-auth so that I can GET follower s/ids. I have constructed a request in r using rstudio with my consumer key & secret in Base64 encoded form. library(httr) POST(url="https://api.twitter.com/oauth2/token"

如何通过AzureAD平台提供的授权方式访问sharepoint online

青春壹個敷衍的年華 提交于 2020-08-11 16:31:24
官方文档: 1. https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645543(v=azure.100)?redirectedfrom=MSDN 2. https://docs.microsoft.com/zh-cn/previous-versions/azure/dn645545%28v%3dazure.100%29 AzureAD的简单介绍:Azure Active Directory(Azure AD)使用OAuth 2.0使您能够授权对Azure AD租户中的Web应用程序和Web API的访问。 OAuth 2.0的Azure AD实施符合OAuth 2.0 RFC 6749,并已扩展为保护第三方Web API。此设计使您可以将AAD用作开发的Web应用程序和Web API的完整安全平台。 上个本篇要用到的图: 在开始之前需要拥有一个AzureAD,我申请的是Office365的开发者账号,其中包括Sharepoint online和AzureAD的订阅。在AzureAD上注册一个客户端app,按上文提到的我们通过这个app来访问SharePoint online。 1.首先我们进入AzureAD注册一个app 2.填入name,选择app的访问账户类型和app类型。我们用户选择第三种,app选择web

ASP.NET Core Authentication and Authorization

喜夏-厌秋 提交于 2020-08-11 16:20:43
原文: ASP.NET Core Authentication and Authorization 最近把一个Asp .net core 2.0的项目迁移到Asp .net core 3.1,项目启动的时候直接报错: InvalidOperationException : Endpoint CoreAuthorization .Controllers .HomeController .Index ( CoreAuthorization ) contains authorization metadata , but a middleware was not found that supports authorization . Configure your application startup by adding app .UseAuthorization () inside the call to Configure (..) in the application startup code . The call to app .UseAuthorization () must appear between app .UseRouting () and app .UseEndpoints (...). Microsoft .AspNetCore .Routing