簡體   English   中英

Openid connect/ Oauth2 for Rest APIs

[英]Openid connect/ Oauth2 for Rest APIs

我在 IDM 上注冊了不同的 web 應用程序(vmware IDM https://github.com/vmware/idm/wiki/Integrating-Webapp-with-OAuth2#authentication-response

很明顯,所有應用程序都使用自己的客戶端 ID 和客戶端密碼進行注冊。 當用戶嘗試訪問 webapp“A”(webappa.com) 時,它會重定向到我的 IDM 登錄頁面,並且在身份驗證后返回代碼,該代碼可以與訪問和刷新令牌交換。 webapp“B”等也會發生類似的事情。這很有效。 現在我對以下 2 個用例感到困惑?

一種。 我想使用來自 webapp“A”的一些 API (webappa.com/api/v1/get_user_projects) 用於某些腳本目的。 所以我的問題是如何針對用戶驗證這些 API? 我可以通過傳遞用戶憑據(使用某些 API 嗎?)從 IDM 提供商處獲取用戶的令牌。 如果答案是否定的,那么通常如何處理?

b. webapp A 和 webaap B 能否一次對用戶具有相同的訪問/刷新令牌?

一種。 當用戶通過特定權限並在特定時間段內進行身份驗證時。 OAuth 旨在讓您可以在微服務之間轉發令牌 - 但您不能提升用戶令牌的權限或時間。 根據您的用例,您可能需要考慮對后台任務具有不同權限的不同令牌。

b. 可以但不建議通過范圍為托管多個應用程序的 web 域的 cookie 跟蹤 Google model,Google 就是這樣做的(mail.google.com / drive.google.com)。 所以依賴於托管和域

首選選項是用戶在應用程序 A 上進行身份驗證,然后單點登錄到應用程序 B。然后,不同的應用程序將獲得具有不同權限的單獨令牌,並且可以更輕松地單獨發展。

這還取決於應用程序的實施方式和您的技術選擇:

  • 使用服務器端技術的“舊式”web 應用程序將期望為每個應用程序發出單獨的身份驗證 cookies

  • 遵循 前端智能后端設計的 SPA 可以通過 SameSite 支持此 model cookies 如果它對一組相關的微 UI 有意義

在后一種情況下,您需要使用具有多個重定向 URI 的單個 OAuth 客戶端(例如,用於郵件和驅動器),因為用戶可以先登錄到其中任何一個。

為復雜的答案道歉 - 但它是一個非常具有隱性成本的建築主題。 從利益相關者的角度來看,這非常簡單——讓它像谷歌一樣工作。 希望這個答案對您的對話有所幫助...

暫無
暫無

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

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