programing

Azure AD에 응용 프로그램을 프로그래밍 방식으로 추가하는 방법은 무엇입니까?

golfzon 2023. 4. 29. 10:07
반응형

Azure AD에 응용 프로그램을 프로그래밍 방식으로 추가하는 방법은 무엇입니까?

나는 Azure AD에서 내 애플리케이션을 자동으로 생성하고 Azure AD에서 생성한 클라이언트 ID를 다시 받고 싶습니다.

이를 위한 PowerShell commandlet이 있습니까?관리 콘솔 외에 API와 같은 다른 방법이 있습니까?

예를 들어 주시겠습니까?

감사합니다!

AAD에서 프로그램 방식으로 응용프로그램을 만들 수 있는 방법은 여러 가지가 있습니다.PowerShell CMDLETs와 Graph API라는 두 가지 방법에 대해 간단히 설명하겠습니다.일반적으로 Graph API를 사용하는 것이 좋습니다.

PowerShell:

AAD 애플리케이션/서비스 주체를 생성할 수 있는 기능을 가진 몇 가지 다른 모듈이 실행되고 있습니다.테넌트에 새 애플리케이션 개체를 생성해야 하는 경우 Azure PowerShell을 사용하여 다음을 호출할 수 있습니다.

https://msdn.microsoft.com/en-us/library/mt603747.aspx

PS C:\> New-AzureRmADApplication -DisplayName "NewApplication" -HomePage "http://www.Contoso.com" -IdentifierUris "http://NewApplication"

테넌트에서 애플리케이션에 대한 서비스 주체를 생성해야 하는 경우 Azure AD PowerShell을 사용할 수 있습니다.

https://msdn.microsoft.com/en-us/library/azure/jj151815.aspx

https://msdn.microsoft.com/en-us/library/azure/dn194119.aspx

New-MsolServicePrincipal -ServicePrincipalNames @("MyApp/Contoso.com") -DisplayName "My Application"

그래프 API: (권장)

Graph API: https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference#ApplicationEntity 에 POST를 수행하여 애플리케이션을 만들 수도 있습니다.

Graph API를 대상으로 하는 애플리케이션을 등록하고 만드는 방법을 보여주는 샘플이 있으며, Graph Client Library를 사용하여 API에 올바른 호출을 할 수 있습니다.

https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet

이것이 도움이 되길 바랍니다!

저는 파티에 조금 늦었지만 최근에도 이 도전에 직면했습니다.다음은 제 솔루션의 관련 부분입니다.

먼저 인증 토큰을 받아야 합니다.이를 위해 당신은 이 편리한 기능을 사용할 수 있습니다.

function GetAuthToken
{
       param
       (
              [Parameter(Mandatory=$true)]
              $TenantName
       )

       $adal = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.dll"

       $adalforms = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll"

       [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null

       [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null

       $clientId = "1950a258-227b-4e31-a9cf-717495945fc2" 

       $redirectUri = "urn:ietf:wg:oauth:2.0:oob"

       $resourceAppIdURI = "https://graph.windows.net"

       $authority = "https://login.windows.net/$TenantName"

       $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority

       $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId,$redirectUri, "Auto")

       return $authResult
}

(Paulo Marques https://blogs.technet.microsoft.com/paulomarques/2016/03/21/working-with-azure-active-directory-graph-api-from-powershell/) 에서 제공)

그런 다음 애플리케이션을 생성하기 위해 Azure Active Directory 그래프 API에 POST 요청을 제출할 수 있습니다.그러나 약간의 설정이 필요합니다.

# The name of this AAD instance
$global:tenant = "mycompany.onmicorosft.com"
$global:aadSecretGuid = New-Guid
$global:aadDisplayName = "azure-ad-displayname"
$global:aadIdentifierUris = @("https://contoso.com")
$guidBytes = [System.Text.Encoding]::UTF8.GetBytes($global:aadSecretGuid)

$global:aadSecret = @{
    'type'='Symmetric';
    'usage'='Verify';
    'endDate'=[DateTime]::UtcNow.AddDays(365).ToString('u').Replace(' ', 'T');
    'keyId'=$global:aadSecretGuid;
    'startDate'=[DateTime]::UtcNow.AddDays(-1).ToString('u').Replace(' ', 'T');  
    'value'=[System.Convert]::ToBase64String($guidBytes);
}

# ADAL JSON token - necessary for making requests to Graph API
$global:token = GetAuthToken -TenantName $global:tenant
# REST API header with auth token
$global:authHeader = @{
    'Content-Type'='application/json';
    'Authorization'=$global:token.CreateAuthorizationHeader()
}

이제 그래프 API를 누를 수 있습니다.

$resource = "applications"
$payload = @{
    'displayName'=$global:aadDisplayName;
    'homepage'='https://www.contoso.com';
    'identifierUris'= $global:aadIdentifierUris;
    'keyCredentials'=@($global:aadSecret)
}
$payload = ConvertTo-Json -InputObject $payload
$uri = "https://graph.windows.net/$($global:tenant)/$($resource)?api-version=1.6"
$result = (Invoke-RestMethod -Uri $uri -Headers $global:authHeader -Body $payload -Method POST -Verbose).value

응답이 돌아오면 필요한 구성 값을 추출할 수 있습니다.

# Extract configuration values
$keyObject = foreach($i in $result.keyCredentials) { $i }

# Tenant ID
$global:aadTenantId = Get-AzureRmSubscription | Select-Object -ExpandProperty TenantId
# Application object ID
$global:aadApplicationObjectId = $result | Select-Object -ExpandProperty objectId
# App ID / Client ID
$global:aadClientId = $result | Select-Object -ExpandProperty appId
# Application Secret/Key
$global:aadAppSecret = $keyObject | Select-Object -ExpandProperty keyId

이것이 누군가에게 도움이 되기를 바랍니다!

Microsoft는 앱을 등록하고 자격 증명을 설정하기 위해 몇 가지 추가 PowerShell cmdlet을 릴리스했습니다.

New-AzureRmADApplication
New-AzureRmADServicePrincipal
New-AzureRmRoleAssignment 
Add-AzureADApplicationCredential 

해당 문서를 검토하십시오. https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal

는 파워셸 스크립트를 몇 개 썼는데, 그것은 다음과 같습니다.

  • AAD 애플리케이션 생성(주로 Matt의 답변 덕분)
  • Azure에서 키 볼트 만들기
  • 키 볼트에서 키 만들기
  • AAD 응용 프로그램의 키 볼트에 사용 권한 할당

이것이 당신이 요구하는 것 이상의 것이라는 것을 알지만, 저처럼 애플리케이션에서 비밀(일명)을 되찾는 데 관심이 있다면(다시 보기 전에 포털에 복사해야 하는 것과 동일), 두 번째 스크립트를 사용하면 Graph API에 대한 호출에서 페이로드의 일부로 명시적으로 전송할 수 있습니다.이 스크립트는 나중에 참조할 수 있도록 파일에 저장합니다.

다른 스크립트는 실제로는 문의 사항이 아니지만 TDE 또는 열 수준 암호화를 위해 Azure Key Vault와 함께 작동하도록 SQL Server를 설정해야 하는 경우에도 유용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/31684821/how-to-add-application-to-azure-ad-programmatically

반응형