我们目前正在开发一个原生移动应用程序,我们需要使用我们的身份服务器(使用 thinktecture 身份服务器 v3 制作)和/或外部社交身份提供者对最终用户进行身份验证,以消耗我们系统中的一些资源。
我们正在尝试使用 OIDC 来获取访问令牌和 id 令牌。在一个完美的世界中,我们希望本地移动应用程序最终用户无限期地保持登录状态(即使在本地应用程序重新启动后),直到最终用户决定注销。
所以首先,我们选择了隐式流。但我们发现刷新令牌在此流程中不可用。
1.为什么隐式流规范禁止刷新令牌?危险在哪里?
2. 换句话说,为什么令牌端点不能通过隐式流“到达”?
然后,我们测试了混合流以获取刷新令牌(非常非常长但可撤销)和访问令牌(短期)。问题是将 client_secret 嵌入到本地公共客户端中。(如 OIDC 规范所描述的不良和不安全的做法)
3)所以……原生公共应用程序不能使用混合流……嗯?
因此,我们目前想知道自定义代码流解决方案是否是一个好主意:制作一个“代理”/“前端”Web api,可以使用他自己的安全 client_secret 到达令牌端点,因此,中继代码/从本机客户端应用程序到授权服务器令牌端点的 refresh_token/access_token 请求?
4) 对此有何评论?