OAuth2规范为机器到机器授权定义了客户端凭据授权,用户不参与。身份通过客户机密确认。这不适合本机客户端,例如移动应用程序,因为无法保证存储的客户端机密。
移动应用可以使用OAuth代码授权授权和代码交换校对密钥(PKCE),它允许动态生成的密钥。如果您需要用户授权/身份验证,这非常有用。
但是,如果您只是需要保护API的资源以便只有您的移动应用可以使用它,但您无法跟踪用户,该怎么办?也就是说,我想为我的应用程序而不是用户获取访问令牌。
如果只能同时禁用登录和同意屏幕,似乎代码授权+ PKCE会很好用。只需返回身份验证代码即可。我希望在IdentityServer3中找到一种方法,但是没有。
是否有允许此配置或流程?还是我犯了安全错误?
EDIT 在我看来,使用PKCE 应该允许具有两个反向信道调用的流,一个到授权端点,另一个到令牌端点。基本上,没有浏览器重定向的代码授权。我知道这样的流程不在规范中,但我是对的吗?无论如何,问题仍然存在,如何使用自己的帐户授权移动应用程序,而不是用户?