[英]Azure AD identity pass through from the website to the azure sql database
我想开发基于Azure Active Directory身份的解决方案。
简而言之:我只想使用AAD(在网站级别)登录一次,并且在执行db操作时它将与数据库用户映射。 我也不想在每次致电后端时都登录。
该网站将使用ASP.NET Core 1.1和实体框架核心开发。
我的主要问题是,我应该如何进行用户身份部分? 应该如何传递它,以及如何将其存储在浏览器中?
第二个问题是,是否可以使用实体框架将用户身份传递给数据库?
我主要担心的是,即使我能够登录到我创建的网站,在执行对数据库的请求时也必须再次登录(我在这里可能是错误的)。
我找到了一些有趣的教程来实现相似的目的,但是它们只讨论桌面客户端而不是网站。 就我而言,将有一个包含网站和Web API的项目。
我发现了这三部分课程:
还有这个:
预先感谢您的所有回复
我的主要问题是,我应该如何进行用户身份部分? 应该如何传递它,以及如何将其存储在浏览器中?
与其他具有版权声明的常见Web应用程序相同。 我们只需要使用OAuth 20.0身份验证代码授予流程并获取Azure SQL数据库的令牌即可创建连接(请参阅代码授予流程 )。
第二个问题是,是否可以使用实体框架将用户身份传递给数据库?
如上所述,进行身份验证后,我们可以获取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数据库的令牌身份验证的代码示例:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.