Oauth 2.0 我应该在本机、公共可下载应用程序中使用client_secret吗?

Oauth 2.0 我应该在本机、公共可下载应用程序中使用client_secret吗?,oauth-2.0,identityserver4,Oauth 2.0,Identityserver4,我已经阅读了很多关于不同流的内容(授权代码、隐式、混合和一些扩展,如PKCE)。现在我在PKCE的授权代码流上 PKCE确保启动器与交换访问令牌的授权码的用户是同一用户。那很好 如果使用此流程时没有客户机密(建议用于SPA/Javscript应用程序),则不保证客户是已知/原始客户。因此,用户给予的“同意”毫无价值。嗯 我正在使用nativate客户端(一个可公开下载的二进制文件)。在二进制文件中烘焙时,不能将机密视为机密,例如,可以对其进行反编译 现在我在怀疑。更好的办法是,将秘密保存在二进制

我已经阅读了很多关于不同流的内容(授权代码、隐式、混合和一些扩展,如PKCE)。现在我在PKCE的授权代码流上

PKCE确保启动器与交换访问令牌的授权码的用户是同一用户。那很好

如果使用此流程时没有客户机密(建议用于SPA/Javscript应用程序),则不保证客户是已知/原始客户。因此,用户给予的“同意”毫无价值。嗯

我正在使用nativate客户端(一个可公开下载的二进制文件)。在二进制文件中烘焙时,不能将机密视为机密,例如,可以对其进行反编译

现在我在怀疑。更好的办法是,将秘密保存在二进制文件中,这样就有了额外的一层保证,即客户就是已知客户,或者停止请求“同意”,只依赖用户凭据,向全世界提供相同的客户id


还是我的故事有什么不对劲?

这是一个很好的问题,让我意识到我的理解存在差距。重定向uri的作用是处理这种风险。在web/https情况下,唯一可行的黑客是编辑用户的主机文件。我是土生土长的,它不太完美,你的问题在下面讨论。一般来说,我们最好的选择是遵循建议/标准-但他们有很多问题

对于阅读本案例的其他人,我读了更多。 客户端模拟不容易修复

RFC8252似乎是最适用于本机应用程序的推荐文章- “声称的‘https’方案”被称为最佳解决方案(IOS、Android和UWP应用程序)

因为我正在使用本机Windows、非UWP应用程序,所以无法使用此应用程序。据我所知,“基于应用程序SID的Web身份验证代理”适用于我的情况

另一种方法是接受未知/身份的客户,并在客户每次访问个人数据时请求“同意”