【发布时间】:2020-01-14 17:02:30
【问题描述】:
我已经阅读了很多关于不同流程(授权代码、隐式、混合和一些扩展,例如 PKCE)的信息。现在我正在使用 PKCE 进行授权代码流。
PKCE 确保发起者与将授权代码交换为访问令牌的用户是同一用户。这很好。
如果在没有 client_secret 的情况下使用此流程(建议用于 SPA/Javscript 应用程序),则无法保证客户端是已知/原始客户端。因此,用户给予的“同意”是没有价值的。嗯?
我正在开发一个 nativate 客户端(一个公共的可下载二进制文件)。在二进制文件中烘焙时不能将机密视为机密,例如可以对其进行反编译。
现在我处于怀疑状态。更好的是,在二进制文件中烘焙秘密,以便有一些额外的保证客户端是已知客户端,或者停止请求“同意”并将相同的 client_id 提供给全世界,只依赖于用户凭据。
还是我的故事有问题?
【问题讨论】: