目前,我使用下面的代碼集成Azure中的Active Directory到我的.NET Web API:在運行時集成的Windows Azure Active Directory的承載認證
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = WebConfigurationManager.AppSettings["AzureClientId"],
Tenant = WebConfigurationManager.AppSettings["AzureTenant"]
}
});
觀衆和租戶在web.config文件中設置。
我可以正確獲取令牌,並且用戶可以使用他們的azure AD帳戶登錄。
但是,我將觀衆和租戶移動到數據庫,以允許用戶通過UI更改設置並禁用/啓用天藍色登錄,而不是更改web.config中的設置。
上面的代碼更改爲:
var azureSetting = db.GetAzureSetting();
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = azureSetting.AzureClientId,
Tenant = azureSetting.AzureTenant
}
});
當第一次啓動應用程序,還有數據庫中沒有的配置,因爲用戶不輸入的配置呢。然後用戶轉到Azure配置屏幕,輸入正確的客戶端Id,租戶,客戶端密鑰。但用戶無法使用azure AD用戶登錄。
任何人都可以爲我解釋這種情況嗎?
有沒有什麼辦法可以在db而不是web.config中保存azure配置?
把你的Azure的AD多租戶並添加自定義的邏輯來檢查令牌是否來自租戶ID存儲在數據庫 –
我的問題是,用戶可以在應用程序之後運行時改變Azure的配置啓動,但是UseWindowsAzureActiveDirectoryBearerAuthentication不讀來自用戶的改變。它仍然使用StartUp.Auth.cs的第一個配置 –
您能否提供您的建議樣本? –