[英]ASP Identity OAuth token - Should I use ValidateClientAuthentication() and Secret in mobile app flow?
我有一個移動應用程序,它與后端的ASP WebAPI進行通信。
我已經實現了令牌流認證(在Taiseer指南的幫助下)。
還有一個我無法理解的概念: CleintId和ClientSecret 。
據我所知,客戶端密碼(以及客戶端ID)意味着阻止訪問生成令牌的API中的終點。 通過這種方式,可以保護終端免受惡意用戶的攻擊,並試圖通過各種輸入調用它來獲取某些信息。
意思是,只有擁有秘密的客戶才能啟動認證流程。 在我的情況下,我只有一個客戶端是一個移動應用程序,它的秘密存儲在一個安全的地方(KeyChain for iOs)。 但我已經讀到,這些鑰匙鏈可以很容易地被傾倒並解剖秘密。
所以我想出的結論是,我可以擺脫整個客戶端的秘密邏輯,主要是將ValidateClientAuthentication()留空:
public async override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
return;
}
而對我而言,這似乎不是一個安全漏洞,而是流動中的一層薄薄的現在消失了。 因為,任何持有安裝了應用程序的移動設備的惡意用戶都可以輕松地揭示客戶機密,並且一旦獲得它,這層安全就沒用了。
這些假設是不正確的?
我可以將ValidateClientAuthentication()方法留空嗎?
正如您已經想到的那樣,移動應用程序無法將其憑據保密,因為它們可以從應用程序二進制文件中提取。 更不用說使用代理服務器和流量分析器(如Fiddler或Wireshark)可以輕松攔截請求。
使用授權代碼流(1)或資源所有者密碼憑據授予,如果客戶端無法安全地存儲其憑據,則客戶端身份驗證不是必需的,因此不能將其視為“機密”應用程序(請參閱http://tools.ietf。 org / html / rfc6749#section-4.1.3和http://tools.ietf.org/html/rfc6749#section-4.3.2 )。
對於非機密應用程序,可以安全地調用context.Validated()
。
就個人而言,我盡量避免資源所有者密碼憑證授予,因為它明顯違背了OAuth2的目的:保密密碼並提供受限制的授權。 如果您的應用程序完全受信任,那么它應該不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.