machenggong1996 / identityserver

OIDC,spring security oauth2,授权模式
19 stars 9 forks source link

请问oauth2/oidc provider用的是什么? #4

Open winer632 opened 4 years ago

winer632 commented 4 years ago

请问oauth2/oidc provider用的是什么? ory hydra/keycloak/okta/gluu/dex 哪一种?

machenggong1996 commented 4 years ago

我的理解是 oidc 是授权服务器对客户端的一种安全保证 使用授权码模式登陆时返回id_token,所以现在的oidc提供者是项目自己在使用授权码模式登陆的时候生成id_token

machenggong1996 commented 4 years ago

以前使用过keyCloak ,但是觉得 可以自己实现

winer632 commented 4 years ago

以前使用过keyCloak ,但是觉得 可以自己实现

这个项目里包含了自己实现的oauth2/oidc provider吗?这个provider就是Spring Security 5?

machenggong1996 commented 4 years ago

在项目分支dev/code_mode下 访问下面两个url http://localhost:8080/oauth/authorize?client_id=008fec3d-c125-409e-9f8d-ef7724ec21df&client_secret=222&redirect_uri=http://www.baidu.com&response_type=code

http://localhost:8080/oauth/token?code=SNHo4K&grant_type=authorization_code&redirect_uri=http://www.baidu.com

这里使用的是授权码模式 访问成功后会得到json返回值 返回值里面包含 id_token 我觉得oidc是这样实现的,oidc的使用要伴随一种使用code的模式 这里使用授权码模式

CustomTokenEnhancer类下面是生成逻辑

machenggong1996 commented 4 years ago

{ "access_token":"045e6bc6-9e74-49c7-8e68-80a77d7403b0", "token_type":"bearer", "refresh_token":"02f156c9-34c7-41e7-b779-cc1c2e33f702", "expires_in":8639495, "scope":"read", "id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOm51bGwsImF1ZCI6IjAwOGZlYzNkLWMxMjUtNDA5ZS05ZjhkLWVmNzcyNGVjMjFkZiIsInNjb3BlIjpbInJlYWQiXSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwIiwiZXhwIjoxNTkyMDQwMzI4LCJpYXQiOjE1OTE5NTM5MjgsImF1dGhvcml0aWVzIjpbImFkbWluIiwicm9sZTEiLCJ1c2VyIl19.Dr3mhM4nd7spu3_9tEfUtRRCQJhr_oz5ipasVNvvDD9XWZBqs-RoYs5jKmFHRPsTAFM_jT_YvR_aYQL0wLg_sDgcUM7T6dUk2WockMaPekGnJAt2oS9xMbyXyjSd2sPFsX56rczQS7OLmKSb3mQBejtBn4nLm1MhlGY5WFD2eSA", "grantType":"authorization_code", "status":1 }

justdoit-aaron commented 2 years ago

在项目分支dev/code_mode下 访问下面两个url http://localhost:8080/oauth/authorize?client_id=008fec3d-c125-409e-9f8d-ef7724ec21df&client_secret=222&redirect_uri=http://www.baidu.com&response_type=code

http://localhost:8080/oauth/token?code=SNHo4K&grant_type=authorization_code&redirect_uri=http://www.baidu.com

这里使用的是授权码模式 访问成功后会得到json返回值 返回值里面包含 id_token 我觉得oidc是这样实现的,oidc的使用要伴随一种使用code的模式 这里使用授权码模式

CustomTokenEnhancer类下面是生成逻辑

认证码模式拿到code回调之后security弹框验证,账号密码不对