2016-03-21 145 views
1

我在通過Azure Active Directory向Azure SQL數據庫進行身份驗證時遇到問題。使用Azure Active Directory在Azure SQL數據庫中進行身份驗證B2C

我非常以下我發現這裏的指令:使用Azure的Active Directory驗證連接到SQL數據庫] [https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/]

我能夠使用本地主機和OpenID Azure中的Active Directory進行身份驗證。我可以註冊,登錄和註銷。我以用戶的身份使用了「[email protected]」(實際電子郵件已更改),並且我可以通過登錄來獲得授權代碼和id_token。我還添加了「[email protected]」作爲我的SQL數據庫的Active Directory管理員,並將我的計算機的IP地址添加到防火牆設置。

我試圖與 「[email protected]」 使用Microsoft SQL Server Management Studio來進行身份驗證,但我收到此錯誤信息:

=================================== 

Cannot connect to abc.database.windows.net. 

=================================== 

Failed to authenticate the user [email protected] in Active Directory (Authentication=ActiveDirectoryPassword). 
Error code 0xCAA90018; state 10 
Could not discover a user realm. (.Net SqlClient Data Provider) 

------------------------------ 
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476 

------------------------------ 
Server Name: abc.database.windows.net 
Error Number: 0 
Severity: 11 
State: 0 
Procedure: ADALGetAccessToken 


------------------------------ 
Program Location: 

    at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) 
    at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) 
    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
    at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) 
    at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) 
    at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, IServerType server) 
    at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser() 

這裏是我的假Azure的設置:

Azure Active Directory B2C 
Directory domain: xyz.onmicrosoft.com 

Azure SQL Server 
Name: abc.database.windows.net 
Server version: V12 
Number of databases: 1 
Database name: def 
Dababase pricing tier: S0 Standard 

我還將包含SQL數據庫和服務器的訂閱設置爲與上述相同的Active Directory。

我讀過一些關於「包含數據庫」和「包含數據庫用戶」的內容,我可能需要2個數據庫:「主數據庫」和「用戶數據庫」,但我不明白這一切,特別是在Azure SQL數據庫的上下文中。下面是我讀的環節之一,但不完全瞭解:

[https://msdn.microsoft.com/library/ff929188.aspx] [包含數據庫用戶 - 讓您的數據庫移植]

我會後下面的各個環節,因爲因此深得讓我發佈超過2個鏈接。

+0

下面是其他連接:[https://technet.microsoft.com/library/ff929071.aspx] [包含的數據庫] [https://azure.microsoft。 [Azure SQL數據庫安全指南和限制] –

+0

**更新** 我有圖片: [登錄嘗試1] [http: //i.stack.imgur.com/qiqUg.png] [登錄嘗試2] [http://i.stack.imgur.com/8u9oZ.png] [error message] [http://i.stack.imgur.com/MqwJS.png] 使用我的假的,不存在的信息的錯誤消息與當我使用我的實際「服務器名稱」和「用戶名「,所以也許這意味着什麼? –

回答

2

正如我們在[https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/] [通過使用Azure Active Directory身份驗證連接到SQL數據庫]中記錄的,MSA帳戶和來賓帳戶在當前版本中不受支持(請參見下文)。 Azure SQL DB目前僅支持本地和集成域Azure AD帳戶。

從DOC ......(見Azure的AD功能和限制)

微軟帳戶(例如outlook.com,hotmail.com,live.com)或其他來賓帳戶(例如gmail.com, yahoo.com)不受支持。如果您可以使用帳戶和密碼登錄到https://login.live.com,那麼您使用的Azure SQL數據庫的Azure AD身份驗證不支持Microsoft帳戶。

感謝 米雷克

米雷克Sztajno,高級PM SQL Server安全團隊

+0

謝謝Mirek;您是否有關於您正在談論的本地和集成域Azure AD帳戶的信息?這是否意味着我無法從Azure Web服務或像「localhost」這樣的外部服務器上通過Azure Active Directory進行身份驗證,並以這種方式訪問​​我們的SQL數據庫?我們正嘗試使用Azure Active Directory來驗證我們公司的所有Web應用程序。 –

+0

至於微軟和來賓賬戶,我以[email protected]爲例,但謝謝,我將通過更改域名來澄清,以[email protected]。在我們的Active Directory設置中,在「身份提供商」下,我選擇了「本地賬戶」作爲「電子郵件」,並且我還沒有設置任何「社交身份提供商」,其中列出了以下提供商:Microsoft帳戶,Google,Facebook ,LinkedIn和亞馬遜。你認爲將身份提供者轉換爲「用戶名」會有幫助嗎?任何其他的事情,我應該嘗試? –

0

婁我收集了一些Azure的廣告鏈接(包括內建域),你去了 https://azure.microsoft.com/en-us/documentation/articles/active-directory-add-domain/ https://azure.microsoft.com/en-us/documentation/articles/active-directory-aadconnect-accounts-permissions/

只要您不使用MS帳戶或訪客帳戶,您描述的方案應該可以工作。您可以使用用戶列表(用戶名爲&密碼)創建自己的本地域,或者使用ADFS將公司域與Azure AD聯合並允許使用Windows憑據。 請隨時使用我們的幫助別名[email protected],以瞭解有關此主題的更多問題。

謝謝,

米雷克

相關問題