最近同事用iOS App调用Open API时遇到一个问题:在access token过期后,用refresh token刷新access token时,服务器响应"invalid_grant"错误:而在access token没有过期的情况下,能正常刷新access token. 先查看了一下OAuth规范中的“Refreshing an Expired Access Token”流程图,以确认客户端的操作流程有没有问题. 问题发生在上图中的(G)操作步骤.iOS App就是按上图的…
转自:http://www.cftea.com/c/2016/11/6705.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code) OAuth 白话简明教程 3.客户端模式(Client Credentials) OAuth 白话简明教程 4.刷新 Access Token OAuth 白话简明教程 5.其他模式 Access Token 会过期,至于什么时候过期,得看授权服务器,有些 30 天过期,有些 10 天过期,有些…
一.简要概述 OAuth2.0是OAuth协议的下一版本,时常用于移动客户端的开发,是一种比较安全的机制.在OAuth 2.0中,server将发行一个短有效期的access token和长生命期的refresh token.这将允许客户端无需用户再次操作而获取一个新的access token,并且也限制了access token的有效期.即当sever发送的access token过期之后,客户端会调用方法,将access token和refresh token发送给服务端,服务端将会返回新的…
在前一篇博文中,我们初步地了解了refresh token的用途——它是用于刷新access token的一种token,并且用简单的示例代码体验了一下获取refresh token并且用它刷新access token.在这篇博文中,我们来进一步探索refresh token. 之前只知道refresh token是用于刷新access token的,却不知道refresh token凭什么可以刷新access token?知其然,却不知其所以然. 这是由于之前没有发现refresh token…
我们在访问很多大公司的开放 api 的时候,都会发现这些 api 要求传递一个 access token 参数.这个参数是什么呢?需要去哪里获取这个 access token 呢? access token 是在 Oauth2.0 协议中,客户端访问资源服务器时需要带上的令牌(其实就是一段全局唯一的随机字符串).拥有这个令牌代表着得到用户的授权.令牌里面包含哪些信息呢?答案是: 哪个用户  在什么时候  授权给哪个app  去做什么事情 当然这些信息是不能直接从 access token 看出来…
在前一篇博文中,我们基于 ASP.NET Web API 与 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授权方式( grant_type=password )获取到了 access token,并以这个 token 成功调用了与当前用户(resource owner)关联的 Web API. 本以为搞定了 access token 就搞定了 Web API 的验证与授权问题,可是发现 OAuth 中还有一种 token,叫 r…
上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内容有: ● Jwt简介 ● .Net的Jwt实现 ● OAuth与Jwt ● .Net中使用Jwt Bearer Token实现OAuth身份验证 ● OAuth与OpenID Connect 注:本章内容源码下载:https://files.cnblogs.com/files/selimsong/…
ASP.NET OAuth.jwt.OpenID Connect 上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内容有: ● Jwt简介 ● .Net的Jwt实现 ● OAuth与Jwt ● .Net中使用Jwt Bearer Token实现OAuth身份验证 ● OAuth与OpenID Connect 注:本章内容源码下载:https://f…
Access Token 与 Refresh Token   access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因为,access token 在使用的过程中可能会泄露.给 access token 限定一个较短的有效期可以降低因 access token 泄露而带来的风险. 然而引入了有效期之后,客户端使用起来就不那么方便了.每当 access token 过期,客户端就必须重新向用户索要授权.这样用户可能每…
access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因为,access token 在使用的过程中可能会泄露.给 access token 限定一个较短的有效期可以降低因 access token 泄露而带来的风险. 然而引入了有效期之后,客户端使用起来就不那么方便了.每当 access token 过期,客户端就必须重新向用户索要授权.这样用户可能每隔几天,甚至每天都需要进行授权操作.这是一件非常影响用户体验的…