簡體   English   中英

一種針對許多其他API微服務的身份驗證API

[英]One authentication API to many other API microservices

我的計划是在.Net Core 2.1中構建一些單獨的WebApi后端應用程序。 我還想擁有一個大型前端應用程序(內置於Angular中),該應用程序將使用上述微服務的調用。

因此,在前端應用程序中,我將具有一些模塊:Login,MicroSrv1,MicroSrv2,...等

登錄GUI將使用LoginApi。 登錄后,我想顯示MicroSrv1 GUI(連接到MicroSrv1 Api),MicroSrv2(連接到MicroSrv2 Api),依此類推。

我的想法是:

  • 打開LoginGUI,單擊登錄
  • 調用LoginApi以在Azure AD中進行身份驗證(使用JWT)並下載用戶數據以及該用戶的角色,然后返回LoginGUI
  • 身份驗證后,我將轉到帶有MicroSrv1GUI,MicroSrv2GUI的下一個面板
  • 然后應該授權對MicroSrv1 Api或MicroSrv2 Api的下一次調用(因此也發送令牌,可能存儲在cookie中)

這是一個好習慣嗎? 是否只有一個單獨的微服務進行身份驗證? 還是每個微服務都應該內置自己的微服務? 如何在微服務之間共享身份驗證令牌並僅使用一個Login Api應用程序? 您能給我一些例子嗎?

我不明白為什么每個微服務都有一個GUI,但是您可以通過使用共享數據保護密鑰為每個微服務添加身份驗證來實現此目的。

您可以通過將數據保護配置為使用共享文件夾作為密鑰存儲區來實現此目的,或者實現自己的數據保護以擁有一個共享存儲區。

從身份驗證服務中,您將根據用戶角色和與其關聯的權限返回JWT令牌。

在客戶端,您將解析JWT令牌,並基於權限,僅顯示適用於用戶的屏幕,而在服務器端,您將讀取每個REST調用中的訪問權限,並通過未授權的錯誤如果用戶嘗試訪問沒有權限的服務

暫無
暫無

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

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