我们可以从sql server用户表将用户导入Azure AD

时间:2017-11-01 15:59:05

标签: sql-server azure-active-directory

我们有.net应用程序,每个都有自己的用户表(其中一些是AspNetUsers表)。现在我们考虑使用Azure Active Directory作为进行身份验证和授权的中心位置。有没有办法从我们现有的SQL Server用户表导入用户到Azure AD?我似乎没有找到这样的方式,我所看到的只是当地AD的重要内容。

2 个答案:

答案 0 :(得分:1)

使用AAD Graph API或AAD PowerShell,您可以在租户中以编程方式创建新用户。

对于AAD Graph API

POST https://graph.windows.net/myorganization/users

Body:

{
  "accountEnabled": true,
  "displayName": "Alex Wu",
  "mailNickname": "AlexW",
  "passwordProfile": {
    "password": "Test1234",
    "forceChangePasswordNextLogin": true
  },
  "userPrincipalName": "Alex@a830edad9050849NDA1.onmicrosoft.com"
}

您可以在GitHub上找到可通过多种语言访问AAD Graph API的示例。

AAD PowerShell

$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile

$PasswordProfile.Password = "Password"

$PasswordProfile.ForceChangePasswordNextLogin = $true

New-AzureADUser -DisplayName "New User" -PasswordProfile $PasswordProfile -UserPrincipalName "NewUser@contoso.com" -AccountEnabled $true -MailNickName "Newuser"

如果有帮助,请告诉我。

答案 1 :(得分:0)

如果尚未执行此操作,则可以将SQL中的查询结果保存为CSV。然后使用PowerShell导入到Azure。需要注意的是,您将需要一个可以执行导入部分的AAD帐户。由于用于Azure AD的PowerShell模块很复杂,因此您应该通过执行以下操作来更新PowerShell。

PS C:\> Install-Module -Name AzureADPreview -RequiredVersion 2.0.2.5 -Verbose -Force

转到此页面以获取最新版本信息。 (从该站点下载对我来说不起作用,但是,运行上述脚本确实可以。

https://www.powershellgallery.com/packages/AzureADPreview/2.0.0.17

更新后,请使用以下脚本导入文件。

$Credential = Get-Credential
Connect-AzureRmAccount -Credential $Credential -Tenant "xxxx-xxxx-xxxx-xxxx" -ServicePrincipal
Account: AzureUser@contosso.onmicrosoft.com
Environment: AzureCloud #usually the region your AAD is located, such as CentralUS.
Subscription: yyyy-yyyy-yyyy-yyyy
Tenant: xxxx-xxxx-xxxx-xxxx

$SecureStringPassword = ConvertTo-SecureString -String "ComplexPasswordString" -AsPlainText -Force
$Users = Import-Csv 'C:\Path to CSV file\SQL_USER_FILE.csv'
$Users | ForEach-Object { 
New-AzureRmADUser -DisplayName $_.DisplayName -UserPrincipalName $_.UserPrincipalName -Password $SecureStringPassword -MailNickname $_.MailNickName -Verbose
 }

如果由于登录无法正常工作,则可以使用简化版本,但需要您使用AAD帐户登录。

Connect-AzureRMAccount
$SecureStringPassword = ConvertTo-SecureString -String "ComplexPasswordString" -AsPlainText -Force
$Users = Import-Csv 'C:\Path to CSV file\SQL_USER_FILE.csv'
$Users | ForEach-Object { 
New-AzureRmADUser -DisplayName $_.DisplayName -UserPrincipalName $_.UserPrincipalName -Password $SecureStringPassword -MailNickname $_.MailNickName -Verbose
 }

I用户-详细,为我提供了导入的运行状态。没有它,执行是安静的。哦,大约需要15分钟才能完成1500位用户的千兆连接。 TP让您知道需要多长时间。

可以在此处找到自动登录的详细信息。 https://docs.microsoft.com/en-us/powershell/module/azurerm.profile/connect-azurermaccount?view=azurermps-6.12.0

注意事项 CSV必须具有上面显示的必填字段。因此,您可能需要花点时间使它们匹配。只要知道,唯一真正重要的字段就是-UserPrincipalName = user@contosso.onmicrosoft.com。