最近工作中需要使用到oauth,注意到oauth客户端的grant_type值可以指定为client_credentials和password两种,很好奇所以网上搜索了一下,发现stackoverflow上一个帖子:
https://stackoverflow.com/questions/34842895/difference-between-grant-type-client-credentials-and-grant-type-password-in-auth
这位网友注意到一个有趣的点:
grant_type=client_credentials时,请求的响应中不包含refresh_token:
而grant_type为password则包含refresh_token:
什么时候用client_credentials(客户端模式)作为grant_type?
下面这个网站有介绍:https://www.poken.com/api/authentication/oauth2/
例如Account creation这个API,从业务上说我们期望它可以通过一个未认证过的用户调用,因为在Account创建之前,不存在authenticated user,这种场景下用grant_type=credentails比较合适。
grant_type=password的情况下,请求access token时,需要在HTTP请求里加上client_id和client_secret两个参数。
grant_type = password
客户端需要用户的用户名和密码,然后将客户端自己的client_id和client_secret发送给认证服务器,换取access token. 适用于受信客户端,比如一种服务对应的移动客户端。
grant_type=client_credentials
帖子里举了一个例子,比如实现一个后台作业,调用API完成一些维护工作,这里面不涉及到采集终端用户的用户名和密码,所以用client_credentials比较合适,这种情况下拿Access Token只需要client_id和client_secret即可,不需要用user_id和password了。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
#微服务框架认证授权中心 项目采用spring cloud、oauth2、spring security # 依赖环境 ...http://localhost:9001/auth/oauth/token?grant_type=client_credentials&client_id=test&client_secret=123456
机架-的oauth2 OAuth 2.0服务器和客户端库。 支持Bearer和MAC令牌类型。 OAuth 2.0授权框架(RFC 6749) ... 令牌请求(grant_type:'client_credentials','password','authorization_code'和'refresh_to
在您的配置中非常重要的是设置'grant_type'=>'password'-否则OAuth插件会将其设置为'client_credentials',而Linkshare将不知道这意味着什么。 您可以通过单击“显示键”按钮在此处找到您的client_id和client_...
其中,grant_type=authorization_code 表示认证类型为授权码模式,code=Mt9NBd 是获取的授权码,client_id=UserManagement 是客户端的 ID,client_secret=user123 是客户端的密钥,redirect_uri=...
总结来说,Spring Security OAuth2 Client的Generic Grant Type功能为我们提供了一个强大的工具,以应对各种非标准或自定义的OAuth2授权需求。通过自定义认证提供者和客户端注册,我们可以灵活地扩展Spring Security...
可以是数组,函数或字符串(以空格分隔)setCredentials(grant_type,凭据) 设置凭证参数grant_type : string ,可以是“ client_credentials”,“ authorization_code”或“ password” 凭证: object ,以下...
在授权码模式中,客户端需要在A步提供response_type、client_id、redirect_uri和scope参数,C步的服务器回应包含code和state参数,D步客户端请求令牌需提供grant_type、code、redirect_uri、client_id,最后E步认证...
- `response_type`:必须参数,固定值为“code”。 - `redirect_uri`:必须参数,授权后要回调的URI。 - `scope`:可选参数,以空格分隔的权限列表。 - `state`:可选参数,用于保持请求和回调的状态,帮助防止...
- `authorized_grant_types`: 允许的授权类型,如"authorization_code","password","client_credentials"等。 - `web_server_redirect_uri`: 用于处理回调的重定向URI。 - `authorities`: 应用具有的角色或权限...
1. **客户端向授权服务器发送请求**,携带必要的参数,如`grant_type`、`client_id`、`client_secret`、`username`、`password`等。 2. **授权服务器验证这些参数的有效性**后,会返回一个包含访问令牌(`access_...
params.add("grant_type", "password"); params.add("username", "admin"); params.add("password", "admin"); params.add("scope", "scope1 scope2"); String response = restTemplate.withBasicAuth(...
- **授权管理**:oauth2client库提供了多种授权类型的处理,包括Authorization Code Grant、Implicit Grant、Resource Owner Password Credentials Grant以及Client Credentials Grant。 - **认证流程**:库支持...
grant_type=authorization_code& code=AUTHORIZATION_CODE& redirect_uri=CALLBACK_URL ``` - **第四步**:授权服务器验证授权码有效性后,颁发访问令牌。 ```json { "access_token":"0e6d26f3 ``` 通过...
2. 客户端使用这些凭据向认证服务器发起请求,请求中包含grant_type(固定为password)、username和password。 3. 如果验证成功,认证服务器会返回访问令牌,客户端可以使用该令牌访问受保护的资源。 在实际搭建...
- `user_details`:存储用户信息,如username、password、email、enabled、account_non_expired、credentials_non_expired、account_non_locked、authorities。 3. OAuth2流程: - 客户端(Client)向授权服务器...
4. **授权流程**:OAuth2协议定义了几个授权流程,如授权码流程(Authorization Code Grant)、密码凭证流程(Resource Owner Password Credentials Grant)等。开发者需要根据实际需求选择合适的流程,并实现相应的...
'grant_type' => 'client_credentials', 'client_id' => $appId, 'client_secret' => $appKey ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_...
# 基于Spring Boot和OAuth2的统一单点登录系统 ## 项目简介 本项目是一个基于Spring Boot框架... 支持客户端凭证模式(Client Credentials Grant) 2. 单点登录(SSO) 实现应用的统一单点登录,支持多种应用场景。
现在,我们需要实现认证端点,比如授权码(Authorization Code)和密码(Resource Owner Password Credentials)类型的授权流程。这些端点将处理用户授权、令牌颁发和刷新令牌等操作。在`routes/api.php`中定义这些...