部署了一个 Oauth2.0。但实际使用的时候,我生成 ID 密钥后,怎么给对接方呢? QQ,邮件 但感觉都不对,这样颁发者(我)也知道了他们的 ID,密钥。
这完全是不可信,可靠的方式啊。 请问大家是用什么方式呢?
部署了一个 Oauth2.0。但实际使用的时候,我生成 ID 密钥后,怎么给对接方呢? QQ,邮件 但感觉都不对,这样颁发者(我)也知道了他们的 ID,密钥。
这完全是不可信,可靠的方式啊。 请问大家是用什么方式呢?
|
zhaishunqiOct 16, 2019
1
上帝视角?
|
|
haoz1w0wOct 16, 2019
2
让他们生成啊
|
|
j2gg0sOct 16, 2019
3
|
|
4
@zhaishunqi ?? 是我对 oauth2.0 理解有误?请指明
|
|
lovedebugOct 16, 2019 via Android
6
建议楼主看一下流程。你是要 oauth 别人比如你允许 qq 登录你的网站,还是要提供 oauth 服务,比如你网站的账户可以登录其他网站呢
|
|
lovedebugOct 16, 2019 via Android
8
那你需要提供一个接口让用户调你的 api 生成 token,他们自己负责保存。
|
|
CRUDOct 16, 2019
9
搞个注册的页面让他们自己注册
|
|
11
@lovedebug 我的意思是,他们调用 API 生成 TOKEN 的时候,使用的密钥。 怎么给他们,这个密钥应该除了他们自己,其他人都不应该知道,包括颁发者(我)。
|
|
U7Q5tLAex2FI0o0gOct 16, 2019
12
appID 和 appSecret 不应该是你给他们哦,是你提供一个页面,他们去注册,生成。全程你都不要参与的
|
|
U7Q5tLAex2FI0o0gOct 16, 2019
13
但是要说你不知道是不可能的,因为这个是会存到你的数据库的 [滑稽
|
|
lovedebugOct 16, 2019
14
他们把公钥填写在你这里,你可以用公钥验证他们,他们自己有私钥可以验证你。
|
|
popvlovsOct 16, 2019
15
Github 的 OAuth 你用过么?和你的场景几乎一样,你可以参考一下 https://github.com/settings/applications/new。AppId 和 AppSecret 是自动生成的,用户自己持有
|
|
popvlovsOct 16, 2019
16
这个 ID 和密钥因为你签发的,你当然需要知道,不然怎么校验防止冒充呢?我在想你是不是把用户的 Username Password Credential 和 AppId、AppSecret 弄混了...
|
|
popvlovsOct 16, 2019
17
你只需要保证 AppId、AppSecret 不被你和用户之外的第三方知道就可以了
|
|
18
@popvlovs 额,好的。我去了解下。 我理解的是,Oauth 认证简单模式只需要 Clientid 就行了,密码模式只需要告诉第三方 clientid 和 Password 就行了。还需要 appid,appsecret ?还是说 是同一个东西,只是叫法不一样?
|
|
momocraftOct 16, 2019
19
建议先把 oauth rfc 看一遍,至少看 1.1
|
|
popvlovsOct 16, 2019
23
@bayker 你的理解是不对的,你所说的密码模式是 Resource Owner Password Credentials Grant 么?这个模式下没有 AppId 和 AppClient (这意味着 OAuth 服务供应商无需校验应用端的可靠性,一般来说不会这样做,除非 OAuth 服务供应商完全信任应用端),这个模式下用户需要输入自己的登陆凭证(一般是用户名和密码)来交换 Token
|
|
popvlovsOct 16, 2019
24
比较常用的模式是 Authorization Code Grant,这种模式下,OAuth 服务的供应商会签发一对 AppId 和 AppSecret 给应用端,这两个东西是 OAuth 服务商校验 App 身份的一个手段,主要目的是为了防止冒充
|
|
popvlovsOct 16, 2019
25
也叫 ClientId 和 ClientSecret
|