2017-09-05 95 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

相關問題