2014-09-23 344 views
1

我正在使用ASP.NET WebAPI構建我正在構建的Web服務。他的網絡服務將使用身份識別服務對用戶進行身份驗證。使用Web API進行身份驗證

我對於如何從外部驗證用戶有點困惑。我們目前的系統是非常基礎的 - 我們在XML請求中發送一個用戶名和密碼作爲一個單獨的字段,並且全部在1個請求中完成。

從我在Google上看到的情況看,最好的方法是從阿里請求一個令牌,然後在隨後的請求中傳遞該令牌。有沒有一種方法可以在1個請求中完成所有操作(也就是說,在API請求中發送數據以及用戶名/密碼或API請求)?

回答

0

從從Google上看,我可以看到,最好的方法是向Ali請求 令牌,然後在隨後的請求中傳遞此令牌。 有沒有辦法在那裏我可以做到這一切在1個請求(即,發送到 的API我對數據要求以及用戶名/密碼或 也許在單個請求API密鑰?)

我不確定爲什麼你的Web服務想知道基於Token的認證中用戶的用戶名和密碼。

在基於令牌的身份驗證中,您的Web服務不應該要求用戶的用戶名和密碼。

取而代之的是,用戶首先使用驗證您的服務信任的令牌發行者驗證用戶名和密碼

驗證成功後,令牌頒發者向用戶提供令牌。一旦用戶擁有該令牌,它就會使用它來調用您的服務。

爲此,您不必重新發明輪子。這裏是JwtAuthForWebAPI OAuth2和OpenId Connect的nuget包。

0

隨着每個請求繼續發送用戶名/密碼並不安全,您需要配置您的api以在指定的生命週期(即24小時)發出訪問令牌。要做到這一點,你需要創建和終點(/令牌)接受用戶名/密碼驗證組合,然後發出訪問令牌。 接收此訪問令牌的客戶端負責安全地存儲,並使用承載方案使用請求「授權」頭對每個請求傳輸給任何受保護資源。

同樣,你不能在一個請求中這樣做,你需要在開始時使用此訪問令牌持續調用受保護資源,直到它過期爲止。

你可以在我的詳細博客文章中閱讀更多關於Token Based Authentication in Web API