OAuth2规范定义了用于机器到机器授权的客户端凭据授权,其中不涉及用户 . 身份通过客户机密确认 . 这不适用于本机客户端,例如移动应用程序,因为无法保证存储的客户端机密 .

移动应用程序可以使用OAuth代码授权授权以及代码交换证明密钥(PKCE),它允许动态生成的密钥 . 如果您需要用户授权/身份验证,这很好 .

但是,如果您只需要保护API的资源,以便只有您的移动应用可以使用它,但您不跟踪用户,该怎么办?也就是说,我想为我的应用程序而不是用户获取访问令牌 .

如果只能禁用登录和同意屏幕,似乎代码授权PKCE会很好用 . 只需返回身份验证代码即可 . 我希望在IdentityServer3中找到一种方法,但事实并非如此 .

是否有允许这样的配置或流程?还是我犯了安全错误?

编辑在我看来,使用PKCE应该允许具有两个反向信道调用的流,一个到授权 endpoints ,另一个到令牌 endpoints . 基本上,没有浏览器重定向的代码授权 . 我知道这样的流程不是't in the spec, but am I right? Regardless, the question remains, how to authorize a mobile app using its own account, not a user'?