首页 新闻 会员 周边 捐助

.net OAuth2密码模式用clientid、clientSecret与grant_type、username、password获取的token区别?

0
悬赏园豆:30 [待解决问题]

密码模式下用clientid、clientSecret取到的Token,和用grant_type、username、password获取的token有区别吗?

 

我的理解是:

第一种,grant_type、username、password:密码模式下,client应用直接把用户引导到IdentityServer提供的验证页面,验证成功就跳转回Client应用并携带Token信息,这里和clientid、clientSecret没一毛钱关系。

第二种,clientid、clientSecret:只要有这个两个就可以获取token,所以client一定是受信任的才可以。

上面取到Token有什么区别?第一种Token只能取到登录者信息资源、第二种可以获取所有信息资源?

Cornelius的主页 Cornelius | 初学一级 | 园豆:80
提问于:2019-11-07 16:03
< >
分享
所有回答(3)
0
A股天才交易猿 | 园豆:1542 (小虾三级) | 2019-11-07 17:35

他讲的只是4中授权模式,跟我要问的关系。

支持(0) 反对(0) Cornelius | 园豆:80 (初学一级) | 2019-11-07 18:11

没关系。

支持(0) 反对(0) Cornelius | 园豆:80 (初学一级) | 2019-11-07 18:14
1

这是两种授权模式,你有一个公开访问的API,你并不希望所有人都可以访问的时候,你可以使用client_credentials授权模式,进行保护API,因为只要你不提供client_id以及client_secret,别人就无法获取token,也就无法调用你APIclient_credentials 获取的toke可以获取大部分的接口,但是在访问获取当前用户的个人信息等接口的时候,是无能为力的,因为该token中并没有包含任何的用户信息用于确定用户身份,也就不知道你是谁,要获取谁的数据。这种情况下,你就需要authorization_code授权模式或 password 模式,必须验证用户身份后才可以访问,这种场景下,你可以主动的添加一些用户信息以及权限信息到生成的token中。这样的token是带有用户信息。这种授权模式是可以访问client_credential授权接口之外,访问有关用户相关的接口。而前面一种都只能访问普通的接口。

ohyex | 园豆:1696 (小虾三级) | 2019-11-07 18:59

有道理,所以两者需要同时使用,清晰明了,谢谢啦。前者确定你是什么客户端,后者确定你是誰。

支持(0) 反对(0) 六月七年 | 园豆:200 (初学一级) | 2020-07-03 21:30
1

这个其实是一个 客户端和资源拥有者 的问题。
前者需要使用我的API,就得到我这 申请 appkey 和 appsecret,这样从我服务端API来说就明确了哪个应用在调用API
后者是一个具体的用户,寄托在客户端上。username、password其实就是一个登陆的过程。明确这个用户是否正确认证,权限有哪些?
这两种只是使用的场景不同。

gt1987 | 园豆:1150 (小虾三级) | 2019-11-08 09:21

有道理,所以两者需要同时使用,清晰明了。谢谢啦

支持(0) 反对(0) 六月七年 | 园豆:200 (初学一级) | 2020-07-03 21:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册