OAuth /oauth/token 401

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OAuth /oauth/token 401相关的知识,希望对你有一定的参考价值。

参考技术A 最近在学习通过OAuth搭建统一授权认证的服务甚是困扰,在通过 /oauth/authorize 获取授权码的时候一切顺利,获取token:

然而总是报以下错误:

网上搜了解决方案,都是说 client_id 和 client_secret 两个参数没有给(没给这两个参数确实会报未授权),但是我的问题不是该原因导致的!

但是我们能从这个思路发现一些问题,会不会因为授权认证时确实没有给到参数。于是我在程序中写了一个过滤器,查看在进入授权认证之前查看请求的参数,发现确实没有参数

相信不用多说了,POST请求发送数据的方式有多种,这种以 application/json 请求体这种方式 /oauth/token 是拿不到数据的

可以通过这种方式

OAuth2.0 授权方式及步骤梳理总结

OAuth 2.0授权协议使第三方应用程序可以通过协调资源所有者和HTTP服务之间的批准交互,或者通过允许第三方应用程序代表资源所有者来获得对HTTP服务的有限访问权,或者代表资源所有者。 代表自己获取访问权限。通常的授权方式分为以下四种:

一、Authorization_Code_Grant  [授权码方式]  (最完整方式,针对用户的授权)  【常用】

1、发起申请授权 2、用户确认授权 3、申请Token 4、过期取新Token 5、取OpenID
通过授权链接 > 跳转认证页面 用户登录 > 返回授权码 通过授权码申请Token > 返回Token(附带refresh_token) 依据refresh_token 取新Token 透过Token取OpenID

参考流程图如下:(图片来源:draft-ietf-oauth-v2-31 4.1

 

二、Implicit_Grant  [授权码缺省方式]  (可纯前端方式,针对用户的授权)  【常用】

1、发起申请授权 2、用户确认授权 4、过期取新Token 5、取OpenID
通过授权链接 > 跳转认证页面 用户登录 > 返回Token(附带refresh_token) 依据refresh_token 取新Token 透过Token取OpenID

参考流程图如下:(图片来源:draft-ietf-oauth-v2-31 4.2

 

三、Client_Credentials  [平台凭证方式]  (可纯后端方式,针对平台的授权,多用户共享)  【少见】

1、发起申请 4、过期取新凭证
平台发起申请 > 返回给平台凭证 凭证过期 取新凭证

参考流程图如下:(图片来源:draft-ietf-oauth-v2-31 4.4

 

四、Password_Credentials  [密码凭证方式]  (充分信任的双方)  【特殊场景】

适用于双方有充分信任关系的情况,例如其操作系统或高特权的应用程序。授权服务器在启用此种授予类型时应当注意,只有在其它授权方式不可能时,再考虑此种授权类型。
首先,用户在平台登录页输入登录凭证,平台依据用户输入的登录凭证信息(通常为账号密码)向授权服务器发起Token申请。授权服务器Response Token。它还用于通过将存储的凭据转换为访问令牌,使用HTTP Basic或Digest身份验证等直接身份验证方案将现有客户端迁移到OAuth。

1、平台登录 2、认证授权 4、过期取新Token
用户登录 > 发起申请 认证并返回Token(附带refresh_token) 依据refresh_token 取新Token

参考流程图如下:(图片来源:draft-ietf-oauth-v2-31 4.3

 

 

参考文档:draft-ietf-oauth-v2-31

有误必究,欢迎指出,持续更新,万分感谢,共同学习。

以上是关于OAuth /oauth/token 401的主要内容,如果未能解决你的问题,请参考以下文章

OpenID 与 OAuth [重复]

SAML OAuth 集成 - 切换 SAML

oAuth 2.0 游乐场

如何 oAuth 和 SOAP?

OAuth2.0 授权方式及步骤梳理总结

在 Spring Boot OAuth2 中跳过 OAuth 用户批准