之前通過Web應用程序和API有Azure的AD是 -獲取用戶信息,如果的WebAPI是基於客戶端憑證驗證
用戶輸入ID和密碼的應用形式 - >用戶獲取登錄(Asp.net身份) - >使用相同的憑證,在WebAPI上獲取生成的令牌(grant_type = password) - >將此令牌存儲爲稍後使用的cookie。
現在,隨着Azure的AD -
我遇到的情況,我有使用Azure的AD驗證用戶。 Azure中的webapi傳遞包含登錄用戶信息的JWT。從這些信息中,我提取用戶電子郵件並強制我的Web應用程序登錄用戶(Asp.net標識)。
Web應用程序調用WebAPI獲取令牌,因爲我無法傳遞密碼,因此我的令牌調用更改爲(grant_type = client_credentials)。但是,我忘記了登錄到Web API的個人用戶的信息。如果我檢查context.user,它指向唯一的客戶端ID而不是任何用戶。
我知道它很混亂,但要求是使用相同的應用程序進行Azure AD身份驗證以及前提表單身份驗證。請建議是否有更簡單的方法來實現這一點。
編輯:我使用Owin的OAuth
我使用兩種形式的驗證和Azure的AD相同的應用程序。然而,最近必須在web api級別添加記錄機制,該機制適用於使用用戶名/密碼進行記錄的內部應用程序。但是,如果webapi使用客戶端證書頒發令牌,則不起作用。我試圖通過用戶名作爲參數,同時驗證客戶端ID(在ValidateClientAuthentication中)並登錄用戶。然而webapi不能保留這個用戶信息。
如果我知道您使用的是什麼協議和技術,這將有所幫助。 OpenIdConnect,OAuth? Katana/Asp.net核心1.0/etc? –