Azure AD身份从网站传递到azure sql数据库
我想开发基于Azure Active Directory身份的解决方案。Azure AD身份从网站传递到azure sql数据库
- 当用户进入网站时,它会要求用户使用他们的azure活动目录登录名和密码登录。
- 该网站可以让他们填写一些信息,然后按表格的“发送”
- 填充用户点击“发送”,数据进入到Web API在执行数据库操作 后端表格后
- 用户身份贯穿所有这些层并且到达azure sql数据库
- 如果他们具有读取\写入权限(在db级别上定义),则执行数据操作。
- 用户登录后只能登录一次。网站一路上记住他们的身份,并将其传递给后端web api和最终的sql数据库。
说得很简单:我只想用AAD登录一次(在网站级别),当执行数据库操作时,它将与数据库用户进行映射。每次我打电话给后端时,我也不想登录。
该网站将在ASP.NET Core 1.1和实体框架核心开发。
我的主要问题是,我应该如何处理用户标识部分?应该如何传递以及应该如何将其存储在浏览器中?
第二个问题是,可以使用实体框架将用户身份传递给数据库吗?
我主要担心的是,即使我能够登录到我创建的网站,我将不得不再次登录到数据库的请求(我可能在这里是错误的)。
我发现一些有趣的教程来实现类似的东西,但他们谈论的是桌面客户端而不是网站。就我而言,将会有一个项目包含网站和网页API。
我发现这3部分课程:
这一个:
预先感谢您对所有的答复
我主要的问题是,我应该如何继续使用用户身份p艺术?应该如何传递以及应该如何将其存储在浏览器中?
它与其他常见的网络应用程序验证与索赔相同。我们只需使用OAuth 20.0授权码授权流程并获取Azure SQL数据库的令牌以创建连接(请参阅code grant flow)。
第二个问题是,可以使用实体框架将用户身份传递给数据库吗?
如上所述,认证后我们可以获取Azure SQL数据库的访问令牌,我们可以创建与数据库的连接。并使用此连接进行实体框架工作。下面是使用代码创建连接令牌:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder["Data Source"] = "aad-managed-demo.database.windows.net"; // replace with your server name
builder["Initial Catalog"] = "demo"; // replace with your database name
builder["Connect Timeout"] = 30;
string accessToken = TokenFactory.GetAccessToken();
if (accessToken == null)
{
Console.WriteLine("Fail to acuire the token to the database.");
}
using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
{
try
{
connection.AccessToken = accessToken;
connection.Open();
Console.WriteLine("Connected to the database");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
我主要关注的是,即使我能够登录到该网站创建,我将不得不再次登录时要求数据库被执行(我可能在这里是错误的)。
无需添加登录。如上所述,用户只需登录一次,然后就可以查询Azure SQL数据库。
这里是有帮助的博客里面包含了有关Azure的SQL数据库令牌认证的代码示例:
Token-based authentication support for Azure SQL DB using Azure AD auth
谢谢你的答复。这个例子非常有帮助。 – Chris4D