2017-09-05 69 views
1

我想开发基于Azure Active Directory身份的解决方案。Azure AD身份从网站传递到azure sql数据库

  • 当用户进入网站时,它会要求用户使用他们的azure活动目录登录名和密码登录。
  • 该网站可以让他们填写一些信息,然后按表格的“发送”
  • 填充用户点击“发送”,数据进入到Web API在执行数据库操作
  • 后端表格后
  • 用户身份贯穿所有这些层并且到达azure sql数据库
  • 如果他们具有读取\写入权限(在db级别上定义),则执行数据操作。
  • 用户登录后只能登录一次。网站一路上记住他们的身份,并将其传递给后端web api和最终的sql数据库。

说得很简单:我只想用AAD登录一次(在网站级别),当执行数据库操作时,它将与数据库用户进行映射。每次我打电话给后端时,我也不想登录。

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

我的主要问题是,我应该如何处理用户标识部分?应该如何传递以及应该如何将其存储在浏览器中?

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

我主要担心的是,即使我能够登录到我创建的网站,我将不得不再次登录到数据库的请求(我可能在这里是错误的)。

我发现一些有趣的教程来实现类似的东西,但他们谈论的是桌面客户端而不是网站。就我而言,将会有一个项目包含网站和网页API。

我发现这3部分课程:

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-directory/

预先感谢您对所有的答复

回答

0

我主要的问题是,我应该如何继续使用用户身份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

+0

谢谢你的答复。这个例子非常有帮助。 – Chris4D

相关问题