我在OAuth和OpenIDConnect以及aspnet核心中間件中迷失了方向。任何幫助,將不勝感激。使用Google OAuth在aspnet核心中保護web服務
我有多個使用相同Web服務集的UI(Web,本機應用程序),我想確保只有經過身份驗證的用戶才能訪問Web服務。我的組織使用Google帳戶,因此我想使用限於組織域的Google身份驗證。
該網站正在要求認證,繼this sample。我現在需要的是讓網站(AngularJS 4)用我可以通過Google驗證的身份驗證令牌來調用我的後端Web服務。
後端服務使用aspnet核心編寫。我嘗試過使用這些方法:Google middleware和Google OpenIDConnect,但這些仍然1)假設有一個用戶界面可以提示未經授權的用戶登錄,2)似乎是基於cookie的,並且我不會爲Web服務調用。
我不想提示用戶登錄,因爲本例中的「用戶」是軟件客戶端。要麼他們已經通過身份驗證,要麼沒有。我只需要獲取認證令牌,驗證它,然後繼續。
This appears to be the same question,它還沒有被回答。
任何建議表示讚賞。此外,關於讓原生應用程序也一樣的建議或提示!
謝謝,我明白了概念和流程(我認爲)。我遇到的問題是迄今爲止我發現的所有中間件都假設您將使用用戶界面進行登錄。我還沒有找到任何示例或文檔說明如何讓客戶端已經*已經登錄*發送通過Web服務調用在服務器端驗證正確的令牌*。我想使用控制器上的[Authorize]屬性,並讓正確的中間件使用Google驗證相應的令牌。我是否必須編寫自己的中間件來做到這一點,還是已經存在? – Celeste
我想我不明白。 OAuth和OIDC中有4名玩家。資源所有者(用戶)和OAuth客戶端(應用程序),OIDC提供程序(在您的示例中爲Google)和資源服務器(其中包含受保護的資源)。當你說「你已經登錄的客戶端」這是你指的?通常,OAuth客戶端需要對返回的令牌執行驗證,以確保它們未被篡改,並且確實已從適當的OIDC提供者返回,而不是某些中間人。有許多庫應該用於此目的。 – jwilleke
感謝您對我的耐心等待。讓我看看我能否澄清:我有2個OAuth客戶端:Web UI和Web服務。這些不是同一過程的一部分;他們在不同的服務器上運行。 Web UI可以使用Google JavaScript庫瀏覽整個OAuth流程。一旦完成,用戶應該能夠使用Web UI,Web UI反過來調用各種Web服務。因此,UI已經獲得了某種應該包含在Web服務調用中的令牌,並且Web服務應該驗證該令牌。 – Celeste