IdentityServer4:我可以在 IdentityServer 中将 PKCE 与客户端凭据一起使用吗?
IdentityServer4: Can I use PKCE with Client Credentials in IdentityServer?
应用程序:Android应用程序(允许一些匿名访问,一些经过身份验证的访问)
身份验证:IdentityServer4
API:所有访问都必须至少由客户端进行身份验证,但有些访问也必须由用户声明进行身份验证。
我有一个 public 客户端(一个 Android 应用程序),目前在使用 IdentityServer4 验证 A USER 时使用 Authorisation_Code 和 PKCE。
我的应用程序包含允许匿名用户导航的页面。但是我希望我的 API 确保我的 public 客户端 Android 应用程序正在调用,所以我想为 API.
验证我的客户端应用程序
由于我在对用户进行身份验证时将 Authorise_Code 与 PKCE 结合使用,因此我的应用程序没有客户端密码。那么我可以使用客户端凭据(只是我的客户端 ID)和 PKCE 对我的客户端进行身份验证吗?
如果没有,我如何在没有登录的用户没有 client_secret 的情况下验证我的客户端?
没有。 PKCE 旨在延长授权码授予。它在客户端凭据的上下文中没有意义。
你想做的事最终还是要靠客户保密,这是不可行的。
如果您担心的是机器人程序,那么任何简单的东西,例如您的应用程序持有但不太担心人类黑客发现的 header 中的密钥,都会将大部分(可能是全部)拒之门外。黑客仍然会进入,但缓解措施应该是要求(用户)对公开 non-public 数据的调用进行身份验证。
应用程序:Android应用程序(允许一些匿名访问,一些经过身份验证的访问)
身份验证:IdentityServer4
API:所有访问都必须至少由客户端进行身份验证,但有些访问也必须由用户声明进行身份验证。
我有一个 public 客户端(一个 Android 应用程序),目前在使用 IdentityServer4 验证 A USER 时使用 Authorisation_Code 和 PKCE。
我的应用程序包含允许匿名用户导航的页面。但是我希望我的 API 确保我的 public 客户端 Android 应用程序正在调用,所以我想为 API.
验证我的客户端应用程序由于我在对用户进行身份验证时将 Authorise_Code 与 PKCE 结合使用,因此我的应用程序没有客户端密码。那么我可以使用客户端凭据(只是我的客户端 ID)和 PKCE 对我的客户端进行身份验证吗?
如果没有,我如何在没有登录的用户没有 client_secret 的情况下验证我的客户端?
没有。 PKCE 旨在延长授权码授予。它在客户端凭据的上下文中没有意义。
你想做的事最终还是要靠客户保密,这是不可行的。
如果您担心的是机器人程序,那么任何简单的东西,例如您的应用程序持有但不太担心人类黑客发现的 header 中的密钥,都会将大部分(可能是全部)拒之门外。黑客仍然会进入,但缓解措施应该是要求(用户)对公开 non-public 数据的调用进行身份验证。