【发布时间】:2020-05-05 07:19:21
【问题描述】:
我计划手动实施 Oauth2 授权代码授予流程(使用 PKCE)。我的问题部分与this 有关。我正在使用 Java,Springboot。
我想使用 Oauth 保护我的后端 API。这些 api 由本机应用程序调用。大多数授权代码授予的 Oauth 实现都需要用户交互。我想知道是否可以避免这种情况。由于我的应用程序在本机应用程序上运行,我不希望用户被重定向到浏览器进行身份验证。我的应用程序具有注册/登录功能。
我打算实现一个过滤器,其中的逻辑看起来与此类似
if(uri contains authorize){
get all details from request
generate a uuid and store details in db with ttl
return uuid as code.
}
else if(uri contains token){
get all details from request
extract code from request and check for validity in database.
if(code valid) {
generate a JWT with access_token with ttl and refresh_token
return JWT
}
}
else{
check if JWT is present and valid
if valid proceed
}
我还将有一个刷新令牌的逻辑。我想知道
- 这样做有没有安全漏洞
- 是否有其他替代方法可以在无需用户交互的情况下实现授权码授予流程。
- 关于 PKCE。使用 PKCE 通过不创建/存储客户端密码来减轻授权代码被拦截的威胁。但是,是什么阻止了用户使用他/她自己的代码质询向授权端点发送请求呢?原生应用中的客户端 ID 有多安全?
【问题讨论】:
标签: java spring-boot oauth-2.0