【发布时间】:2017-07-22 00:57:04
【问题描述】:
目前,我正在使用以下代码将 Azure Active Directory 集成到我的 .NET Web API 中:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = WebConfigurationManager.AppSettings["AzureClientId"],
Tenant = WebConfigurationManager.AppSettings["AzureTenant"]
}
});
受众和租户在 web.config 文件中设置。
我可以正确获取令牌,用户可以使用他们的 azure AD 帐户登录。
但是,我将受众和租户移至数据库,以允许用户更改设置并通过 UI 禁用/启用 Azure 登录,而不是更改 web.config 中的设置。
上面的代码改为:
var azureSetting = db.GetAzureSetting();
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = azureSetting.AzureClientId,
Tenant = azureSetting.AzureTenant
}
});
应用首次启动时,数据库中没有配置,因为用户尚未输入配置。然后用户转到 azure config 屏幕,输入正确的 Client Id、Tenant、Client Secret。但用户无法使用 azure AD 用户登录。
谁能帮我解释一下这个案例?
有没有办法将 azure config 保存在 db 而不是 web.config 中?
【问题讨论】:
-
将您的 Azure AD 转为多租户并添加自定义逻辑以检查令牌是否来自存储在数据库中的租户 ID
-
我的问题是用户可以在应用程序启动后在运行时更改 Azure 配置,但是 UseWindowsAzureActiveDirectoryBearerAuthentication 不会读取用户的更改。它仍然使用 StartUp.Auth.cs 中的第一个配置
-
能否提供样品供您参考?
标签: azure asp.net-web-api active-directory bearer-token