因为有需要通过 keycloak 进行授权的需求,一开始是想找看有没有官方提供的 lib ,结果发现因为各种原因(比如说框架太新、依赖没更上等)并没有能用的,强行找一个的结果就是出现各种诡异的错误(比如说 userid 始终为 null )。
然后考虑能不能直接调用 http 请求,自行拼接 header 和 body……postman 测试完全可以,只要自己记得保存 access_token 和 refresh_token 就行了。但是问题来了……
把登入时需要的信息保存下来,也就是大概会创建一个长这样的 store:
{
client_id: string, client_secret: string, ...
}
而且在调用 http request 的时候,也会把用户名和密码直接传过去。如果在浏览器里面打断点的话,可以直接取得当前的用户名和密码。就算是 app client ,也是可以通过 hack 进内存的方式获得这些敏感信息的吧。
如果把这些 passwd 和 token 在 store 里面 encrypt 的话,问题在于和 keycloak 通信的时候需要传输这个 token 本身,也就是说 encrypt 的内容必须能够被解密,在已知源代码或源代码产生物的时候,这样就意味着白加密了。
那么一般对待这些敏感信息的话,该用什么方式来处理以防止信息泄漏呢?
话说过来也看了一下现在在用的客户端开发的框架里面的非官方 keycloak 封装库……感觉就是直接在 http api 上封装了一层,压根没有讨论到加密的内容……所以大概也是不符合要求的了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.