簡體   English   中英

如何在ASP.NET MVC Web Api上使用外部身份驗證服務

[英]How to use external authentication services on a ASP.NET MVC Web Api

我正在使用Visual Studio 2013,C#和.NET Framework 4.5.1開發ASP.NET MVC Web Api。

我在讀這篇文章 ,這很有趣。 它僅討論ASP.NET MVC應用程序,沒有提及如何使用Web Api實現它。

我想我可以將其與Web Api一起使用,但是我不知道如何使用,因為正如我在文章中所讀到的那樣,我將需要一個登錄頁面,而Web api沒有一個。

如果我將通過手機(iOS,Android,Windows Phone等)使用該Web API; 我需要做什么?

也許我需要在移動應用程序上登錄表單,或者我需要在Web API上登錄頁面以允許在Google,Facebook等上登錄。

有什么建議嗎?

@VansFannel,這是一個古老的問題,我想您已經繼續前進,但是我將其留在這里供將來的求職者使用。

您是正確的,它沒有提供登錄頁面,但是提供了登錄頁面本身將使用的內容。

開始之前,請下載一個名為PostMan的Chrome插件。 在使用過程中,我將顯示一些屏幕截圖。 我已經設置了一個基本的WebAPI,其中仍帶有示例Values控制器,但是受[Authorize]保護。 對於本示例,我正在http:// localhost:54211上運行示例WebAPI。

這是一個高級過程:

創建一個用戶

我猜您在這個新數據庫中還沒有任何用戶,但是如果您這樣做,請跳過此步驟。 否則,這就是在沒有UI的情況下創建它們的方式。

如果正文為空並且標頭狀態為200,則說明成功:

如果失敗,您將返回標頭狀態錯誤400和正文中的某種錯誤,例如:

驗證中

好的,我們在數據庫中有一個用戶,讓我們通過WebAPI進行身份驗證。

  • POST到http:// localhost:54211 / token
    • 該帖子應為x-www-form-urlencoded,並應包含以下字段:
    • grant_type ---設置為“密碼”
    • 用戶名---例如“ test@somedomain.com”
    • 密碼---例如“ Test123!”

在服務器的結果中,如果成功(狀態200),您將獲得所謂的“承載者令牌”-位於“ access_token”字段中,如下所示:

為了進行測試,請將令牌值復制到剪貼板(在您的應用中,您可以將其存儲在變量中)。

使用Bearer令牌調用We​​bAPI方法

如果您嘗試在未通過身份驗證的情況下調用[Authorize]受保護的方法,則會看到類似以下內容:

但是您已經通過身份驗證了,對嗎? 那它為什么不認識你呢? 因為它是基於REST的並且是無狀態的-通話完成后不再認識您。 因此, 每次撥打電話時 ,您都必須“提醒”您的身份。 為此,您可以傳遞每個請求之前收到的令牌。

  • 使用所需的任何動詞(GET,POST等)調用URL( http:// localhost:54211 / api / Values / )。 我在下面使用GET,因為在ValuesController中這是必需的。
    • 在請求的標頭中,添加以下字段:“授權”,其值為“承載[令牌]”,其中[令牌]是您之前存儲的令牌。

如果您獲得成功(200分),則可以檢查它的身體數據,它將得到您的回應:

就是這樣完成的! 希望對您或其他人有幫助。

Web API提供了通過owin管道與Facebook,Twitter,Microsoft,Google等社交網絡集成的支持。

在此處查找示例該示例為Web API提供Facebook登錄支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM