繁体   English   中英

Azure AD身份从网站传递到Azure SQL数据库

[英]Azure AD identity pass through from the website to the azure sql database

我想开发基于Azure Active Directory身份的解决方案。

  • 当用户进入网站时,它会要求他们使用其蔚蓝的活动目录登录名和密码登录。
  • 该网站允许他们用一些信息填写表格,然后按“发送”
  • 填写表单后,用户单击“发送”,数据将转到执行数据库操作的后端中的Web api
  • 用户身份经过所有这些层并到达Azure SQL数据库
  • 如果它们具有读/写权限(在db级别上定义),则执行数据操作。
  • 用户进入网站后仅登录一次。 该网站会沿途记住他们的身份,并将其传递给后端Web API,最后传递给sql数据库。

简而言之:我只想使用AAD(在网站级别)登录一次,并且在执行db操作时它将与数据库用户映射。 我也不想在每次致电后端时都登录。

该网站将使用ASP.NET Core 1.1和实体框架核心开发。

我的主要问题是,我应该如何进行用户身份部分? 应该如何传递它,以及如何将其存储在浏览器中?

第二个问题是,是否可以使用实体框架将用户身份传递给数据库?

我主要担心的是,即使我能够登录到我创建的网站,在执行对数据库的请求时也必须再次登录(我在这里可能是错误的)。

我找到了一些有趣的教程来实现相似的目的,但是它们只讨论桌面客户端而不是网站。 就我而言,将有一个包含网站和Web API的项目。

我发现了这三部分课程:

https://msftplayground.com/2017/04/part-1-azure-sql-database-with-azure-active-directory-authentication/

还有这个:

https://blogs.msdn.microsoft.com/benjaminperkins/2016/10/20/how-i-connected-a-console-application-to-a-web-api-protected-by-an-azure-active-目录/

预先感谢您的所有回复

我的主要问题是,我应该如何进行用户身份部分? 应该如何传递它,以及如何将其存储在浏览器中?

与其他具有版权声明的常见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数据库的令牌身份验证的代码示例:

使用Azure AD身份验证对Azure SQL DB的基于令牌的身份验证支持

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM