sql - Azure 应用服务身份验证 - SQL 数据库客户端分片
问题描述
我们有一个包含多个客户数据的天蓝色 SQL 数据库。每个表都有一个帐户 ID,我们计划使用它来分隔客户数据。我们通过 Azure App 服务和 azure function app 中的 bff 中间件显示数据。我们计划添加 Azure 应用服务身份验证,以便在我们的 Web 应用中对用户进行身份验证。
但是,我们找不到有关如何针对经过身份验证的用户存储帐户 ID 的文档;这样我们就可以从特定于该用户/客户端的数据库中返回结果?
解决方案
应用服务使用特殊标头将用户声明传递给您的应用程序。不允许外部请求设置这些标头,因此它们仅在由应用服务设置时才存在。
有两种方法可以获取用户名(用于登录的帐户 ID)。
1.您可以使用X-MS-CLIENT-PRINCIPAL-NAME
http resquest header来获取用户名。
var name1=httpRequest.Headers["X-MS-CLIENT-PRINCIPAL-NAME"].ToString();
2.您可以从Run方法中注入的ClaimsPrincipal实例中获取经过身份验证的用户信息。
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequest httpRequest,
ILogger logger,
ClaimsPrincipal claimsPrincipal)
{
var name2 = claimsPrincipal.Identity.Name;
}
获取用户名(登录帐号)后,可以将其添加到sql语句的条件中。
笔记:
在 Azure 广告中添加应用注册时,将重定向 url添加为并在设置时https://yourfunctionname.azurewebsites.net/.auth/login/aad/callback
单击。ID token
Advanced settings
推荐阅读
- r - ggplot2:如何将数学符号分配给两种不同美学的图例标签?
- javascript - 自定义 HTMLElement 组件测试
- python-3.x - 如何判断一个词树是否与另一个相似?
- python - 图像不显示在 Django 中,但链接在搜索栏中有效
- laravel - 我正在拼命地向我的数据库添加图像(laravel 5.2)
- postgresql - Golang 记录 id 为 0
- html - 无论高度如何,始终在图像中心放置文本
- azure - 在 Azure 机器学习工作台中的 Azure 订阅中找不到实验帐户
- .htaccess - 使用 .HTACCESS 重写规则将我的网站重定向到 HTTPS?
- hibernate - 在 Spring Boot RESTful 响应中获取 OneToMany 数据的问题