Yar*_*evi 5 oauth access-token asp.net-web-api owin asp.net-identity
我有一个移动应用程序,它与后端的ASP WebAPI进行通信.
我已经实现了令牌流认证(在Taiseer指南的帮助下).
还有一个我无法理解的概念:CleintId和ClientSecret.
据我所知,客户端密码(以及客户端ID)意味着阻止访问生成令牌的API中的终点.通过这种方式,可以保护终端免受恶意用户的攻击,并试图通过各种输入调用它来获取某些信息.
意思是,只有拥有秘密的客户才能启动认证流程.在我的情况下,我只有一个客户端是一个移动应用程序,它的秘密存储在一个安全的地方(KeyChain for iOs).但我已经读到,这些钥匙链可以很容易地被倾倒并解剖秘密.
所以我想出的结论是,我可以摆脱整个客户端的秘密逻辑,主要是将ValidateClientAuthentication()留空:
public async override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
return;
}
Run Code Online (Sandbox Code Playgroud)
而对我而言,这似乎不是一个安全漏洞,而是流动中的一层薄薄的现在消失了.因为,任何持有安装了应用程序的移动设备的恶意用户都可以轻松地揭示客户机密,并且一旦获得它,这层安全就没用了.
这些假设是不正确的?
我可以将ValidateClientAuthentication()方法留空吗?
正如您已经发现的,移动应用程序无法将其凭据保密,因为它们可以从应用程序二进制文件中提取。更不用说使用代理服务器和 Fiddler 或 Wireshark 等流量分析器可以轻松拦截请求。
通过授权代码流程 (1) 或资源所有者密码凭据授予,如果客户端无法安全地存储其凭据,则客户端身份验证不是强制性的,因此不能被视为“机密”应用程序(请参阅https://www.rfc- editor.org/rfc/rfc6749#section-4.1.3和https://www.rfc-editor.org/rfc/rfc6749#section-4.3.2)。
对于非机密应用程序,可以安全地调用context.Validated().
就我个人而言,我尝试尽可能避免授予资源所有者密码凭据,因为这显然违背了 OAuth2 的目的:对密码保密并给予受限授权。不过,如果您的应用程序完全受信任,那么这应该不是问题。
| 归档时间: |
|
| 查看次数: |
2892 次 |
| 最近记录: |