oauth

到底什么是 OAuth 2.0?

与世无争的帅哥 提交于 2020-07-27 15:05:45
作者:阮一峰 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749。 一、应用场景 为了理解OAuth的适用场合,让我举一个假设的例子。 有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。 问题是只有得到用户的授权,Google才会同意"云冲印"读取这些照片。那么,"云冲印"怎样获得用户的授权呢? 传统方法是,用户将自己的Google用户名和密码,告诉"云冲印",后者就可以读取用户的照片了。这样的做法有以下几个严重的缺点。 (1)"云冲印"为了后续的服务,会保存用户的密码,这样很不安全。 (2)Google不得不部署密码登录,而我们知道,单纯的密码登录并不安全。 (3)"云冲印"拥有了获取用户储存在Google所有资料的权力,用户没法限制"云冲印"获得授权的范围和有效期。 (4)用户只有修改密码,才能收回赋予"云冲印"的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。 (5)只要有一个第三方应用程序被破解

第十节:IdentityServer4隐式模式介绍和代码实操演练

左心房为你撑大大i 提交于 2020-07-27 08:40:29
一. 前言 1.简介   简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。 注:该模式也有很大的弊端,就是请求令牌在浏览器中能被看到。 2. 流程图 流程 (A)客户端将用户导向认证服务器。 (B)用户决定是否给于客户端授权。 (C)假设用户给予授权,认证服务器将用户导向客户端指定的"重定向URI",并在URI的Hash部分包含了访问令牌。 (D)浏览器向资源服务器发出请求,其中不包括上一步收到的Hash值(#号的部分)。 (E)资源服务器返回一个网页,其中包含的代码可以获取Hash值中的令牌。 (F)浏览器执行上一步获得的脚本,提取出令牌。 (G)浏览器将令牌发给客户端。 (H)客户端拿到令牌以后,就可以去请求资源服务器获取资源了。 3. 流程剖析 步骤A: 导向认证服务器,如下请求,进而再导向认证服务器的登录页面。 GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb 参数包括:   response_type:表示授权类型,此处的值固定为"token",必选项。

使用java8API遍历过滤文件目录及子目录及隐藏文件

给你一囗甜甜゛ 提交于 2020-07-27 00:10:08
1. 使用 Files.list() 迭代目录及其子目录文件 Files.list() 可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); 输出: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java 2. 使用 filter表达式过滤文件 过滤器函数引用,isRegularFile表示普通文件 Files.list(Paths.get(".")) .filter(Files::isRegularFile) //过滤器:只保留普通文件,过滤掉文件目录 .forEach(System.out::println); 输出结果如下: .\filename1.txt .\filename2.txt .\Employee.java 也可以使用lambda表达式进行过滤 Files.list(Paths.get(".")) .filter(s -> s.startsWith("file")) //过滤器:只保留以file开头的文件及目录 .forEach(System.out::println); 3. 使用 Files.newDirectoryStream()迭代目录及其子目录文件 另一种更灵活的遍历目录的方式

第五节:IdentityServer4的Pkce机制、令牌刷新机制、混合授权模式

独自空忆成欢 提交于 2020-07-26 23:59:31
一. PKCE机制 1. 准备 (1). IDS4_Server1:认证授权服务器 (2). MvcClient1:web客户端  然后将上述两个项目配置成授权码模式(如何配置见上一节 IdentityServer4授权码模式介绍和代码实操演练 ) PS: PKCE机制是在授权码模式的基础上,增加了几个验证参数,使其更加安全。 2. 代码配置 (1).IDS4_Server1中的Config1,新增 RequirePkce = true, 开启Pkce授权校验。 (2).MvcClient1中的ConfigureServices中, 新增options.UsePkce = true;开启Pkce. (默认就是true,所以可以省略) PS:实际上在上一节的授权码模式中已经开启了pkce,只是没有单独点明增加的参数的含义。 3. 剖析测试 (1).在导向认证服务器的请求和确认授权页面的请求中,新增两个参数:code_challenge 和 code_challenge_method. (2).客户端携带授权码请求认证服务器的时候,携带的参数中新增: code_verifier 二. 令牌刷新机制 1. 准备 (1). IDS4_Server1:认证授权服务器 (2). MvcClient1:web客户端  然后将上述两个项目配置成授权码模式(如何配置见上一节

ASP.NET Web API 使用Swagger使用笔记

删除回忆录丶 提交于 2020-07-25 16:37:22
最近换了工作,其中Webapi这块没有文档,之前有了解过Swagger借此机会好好整理下常用的地方分享给有需要的小伙伴。 概述: 1.swagger 引用 2.swagger 问题1.action 方法名称相同处理 3.swagger 问题2.序列化出来的JSON NULL 值处理 4. 汉化及controller说明 5. 统一返回HttpResponseMessage 返回类型 指定 6. 自定义 HTTP Header (oauth2.0 请求) 7.请求示例remarks 1.swagger 引用 第一步: 第二步: 修改SwaggerConfig.cs 如 api 版本号,title 第三步: 创建项目XML注释文档 右键项目→属性→生成→选中下方的 "XML文档文件" 然后保存 配置启用: c.IncludeXmlComments(string.Format("{0}/bin/BjxWebApis.XML",System.AppDomain.CurrentDomain.BaseDirectory)); 第四步:启动项目 地址:http://localhost:58303/swagger 哈哈 成功了,不对这个是最终效果,下面一步一步来实现吧。 2.swagger 问题1.action 方法名称相同处理 根据错误提示 很快发现 某位大神 同样的接口名 传递了不同参数

Who is responsible to create login form to get accessToken? Authorization server or Angular? [closed]

僤鯓⒐⒋嵵緔 提交于 2020-07-23 08:48:05
问题 Closed . This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 2 months ago . Improve this question I am recently learning about OAuth2. Basically I am using Angular client side, and Backend Spring Boot Rest API. I am having some little confusion regarding login form. Normally when we use 3rd party REST Api like Facebook or Google Rest API, these APIs

Who is responsible to create login form to get accessToken? Authorization server or Angular? [closed]

被刻印的时光 ゝ 提交于 2020-07-23 08:46:28
问题 Closed . This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 2 months ago . Improve this question I am recently learning about OAuth2. Basically I am using Angular client side, and Backend Spring Boot Rest API. I am having some little confusion regarding login form. Normally when we use 3rd party REST Api like Facebook or Google Rest API, these APIs

Who is responsible to create login form to get accessToken? Authorization server or Angular? [closed]

两盒软妹~` 提交于 2020-07-23 08:46:13
问题 Closed . This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing this post. Closed 2 months ago . Improve this question I am recently learning about OAuth2. Basically I am using Angular client side, and Backend Spring Boot Rest API. I am having some little confusion regarding login form. Normally when we use 3rd party REST Api like Facebook or Google Rest API, these APIs

Java - Perform oAuth1.0 authenticated request with given consumerKey, consumerSecret, accessToken, accessTokenSecret and realm

为君一笑 提交于 2020-07-22 10:06:46
问题 I am trying to send an http post to a given oAuth1.0 protected endpoint, the owner of the endpoint provided to me: consumerKey consumerSecret accessToken accessTokenSecret realm I wrote some code based on How to call API (Oauth 1.0)? public class HttpAuthPost { public HttpAuthPost() { realmID = "XXXXXXX"; String consumerKey = "kjahsdkjhaskdjhaskjdhkajshdkajsd"; String consumerSecret = "jklahsdkjhaskjdhakjsd"; String accessToken = "iuyhiuqhwednqkljnd"; String accessTokenSecret =

How to set OAuth realm in RestAssured

狂风中的少年 提交于 2020-07-22 08:55:10
问题 I am using RestAssured library for automating NetSuite Restlets. This Restlets are using OAuth 1.0 for authentication. Apart from consumer key, consumer secret, access token and token secret, I need to set advanced fields like REALM. But I couldn't find any way to set that in RestAssured. RequestSpecification request = new RequestSpecBuilder() .addHeader("Content-Type", ContentType.JSON.toString()) .setBaseUri(url).build() .auth().oauth( netsuiteConfig.getNetsuiteConsumerKey(), netsuiteConfig