Azure ADへのアプリケーションをプログラムで追加する方法 -- azure フィールド と powershell フィールド と automation フィールド と azure-active-directory フィールド 関連 問題

How to add application to Azure AD programmatically?












29
vote

問題

日本語

Azure ADでのアプリケーションの作成を自動化し、Azure ADによって生成されたクライアントIDを取得します。

これを行うためのPowerShellコンドジレットはありますか?管理コンソール以外にもこれを行うAPIのような他の方法はありますか?

あなたは私を例にしてもらえますか?

ありがとう!

英語

I want to automate the creation of my application in Azure AD and get back the client id generated by Azure AD.

Are there PowerShell commandlets to do this? Is there some other means, like an API of doing this besides the management console?

Can you point me to an example?

Thanks!

</div
           
   
   

回答リスト

43
 
vote
vote
ベストアンサー
 

アプリケーションをプログラムでAADに作成できる方法はいくつかあります。これを行うことができる2つの異なる方法を簡単に説明します:PowerShell CmdletsとGraph API。一般的に、私はこれのためにグラフ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を使用できます。

href ="https://msdn.microsoft.com/en-us/library/azure/jj151815.aspx"> 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: (推奨)

POSTをグラフAPIにすることでアプリケーションを作成することもできます。 https://msdn.microsoft.com/library/ Azure / AD / Graph / API /エンティティと複合型リファレンス#ApplyEntity

グラフAPIをターゲットにするためにアプリケーションを登録および作成する方法を示すサンプルを示し、Graph Client Libraryを使用してAPIを正しく呼び出してください。

https://github.com/azureadsamples/WebApp-graphapi-dotnet

これが助けになることを願っています!

 

There are a number of ways you can create an application in AAD Programatically. I will briefly cover two different ways you can go about doing this: PowerShell CMDLETs and the Graph API. In general, I would strongly reccommend using the Graph API for this.

PowerShell:

There are a few different modules running around that have the ability to create AAD Applications/Service Principals. If you need to create a new application object in your tenant, you can use Azure PowerShell to make the following call:

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

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

If you need to create a service principal for your application in your tenant you can use 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" 

Graph API: (recommended)

You can also create applications by making a POST to our Graph API: https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/entity-and-complex-type-reference#ApplicationEntity

We have samples that show how you can register and create an applicatoin to target the Graph API, and use the Graph Client Library to assist you in making the correct calls to the API:

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

I hope this helps!

</div
 
 
         
         
5
 
vote

私はパーティーに少し遅れています - しかし私は最近この課題にも遭遇しました。これが私の解決策からの関連する抜粋です...

最初に認証トークンを取得する必要があります。このためにこの便利な機能を使用できます。

<事前> <コード> function GetAuthToken { param ( [Parameter(Mandatory=$true)] $TenantName ) $adal = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.IdentityModel.Clients.ActiveDirectory.dll" $adalforms = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.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

私はこれが誰かに役立つことを願っています!

 

I'm a little late to the party - but I recently encountered this challenge too. Here are the relevant excerpts from my solution...

First you need to get the authentication token. For this you can use this handy function.

function GetAuthToken {        param        (               [Parameter(Mandatory=$true)]               $TenantName        )         $adal = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.IdentityModel.Clients.ActiveDirectory.dll"         $adalforms = "${env:ProgramFiles(x86)}Microsoft SDKsAzurePowerShellServiceManagementAzureServicesMicrosoft.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 } 

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

You can then submit a POST request to the Azure Active Directory Graph API in order to create your application. However there is a little setup required.

# 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() } 

Now you can hit the Graph 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 

Once the response comes back, you can extract the configuration values you need.

# 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 

I hope this helps somebody!

</div
 
 
 
 
2
 
vote

マイクロソフトは、アプリを登録して資格情報を設定するための追加のPowerShellコマンドレットをいくつか解放しました:

<事前> <コード> New-AzureRmADApplication New-AzureRmADServicePrincipal New-AzureRmRoleAssignment Add-AzureADApplicationCredential

彼らの文書を確認してください: ror="nofollow noreferrer"> https:// docs。 microsoft.com/eus/azure/azure-resource-manager/Resource-Group-AuthenTicate-Service-Principal

 

Microsoft has released a couple of additional PowerShell cmdlets to register an app and set credentials:

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

Please review their documentation: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal

</div
 
 
0
 
vote

私はいくつかのPowerShellを書いた Scripts どちらを

  • AADアプリケーションを作成する(主にマットの< / a>答え)
  • azure
  • でキーボールトを作成する
  • キーボールト
  • にキーを作成する
  • AADアプリケーションのキーボルトに権限を割り当てる

これはあなたが求めているものより多くのことを知っていますが、私のような場合は、アプリケーションから Secret(AKA鍵)を取り戻すことに興味があるなら(同じものと同じもう一度表示する前にコピーしなければならないポータルに追加します。 "> 2番目のスクリプトを使用すると、Graph APIへの呼び出しでペイロードの一部として明示的に送信することができます。スクリプトは、後で参照するためのファイルにそれを保存します。

他のスクリプトはあなたが尋ねているものではありませんが、TDEまたは列レベルの暗号化のためにAzureキーボールトを操作するようにSQL Serverを設定する必要がある場合は、まだ役に立ちます。

 

I've written some powershell scripts which will

  • Create AAD applications (thanks mainly to Matt's answer)
  • Create a Key Vault in Azure
  • Create a key in the Key Vault
  • Assign permissions to the key vault for the AAD applications

I know this is more than what you're asking for, but if, like me, you're interested in getting back the secret (aka key) from the application (the same one you add in the portal which you have to copy before never seeing it again), then the second script will allow you to explicitly send that in as part of the payload in a call to the Graph API. The script will save that to a file for you to refer to later.

The other scripts are not really what you're asking about, but you may still find them useful if you ever need to set up SQL Server to work with Azure Key Vault for TDE or column-level encryption.

</div
 
 
 
 

関連する質問

0  Azure OAUTH2クライアント認証情報フローを使用して、Classic Azure Service Management Rest APIにアクセスできますか?  ( Can i use azure oauth2 client credentials flow to access the classic azure servi ) 
これはAzure OAUTH2クライアント認証情報の説明です。 HTTPS: //docs.microsoft.com/en-US/azure/Active-Directory/Develop/Active-Directory-Protocols-oauth...

1  OpenConnectを使用してAzure AD UserInfoエンドポイントから拡張ユーザープロファイルデータを返すことは可能ですか?  ( Is it possible to return extended user profile data from azure ad userinfo endpo ) 
シナリオ:アカウントの種類に関する情報を含むようにAzure ADでユーザープロファイルにフィールドを追加します(例えば、従業員、基本顧客、プレミアム顧客)。 Azure ADのOpenConnect UserInfoエンドポイントを使用して返すことができます...

0  AWS Cognitoは、OIDCのMicrosoft Azure Federatedユーザーのためのプールの一意性を達成できません  ( Aws cognito fail to achieve uniqueness in pool for oidc microsoft azure federate ) 
AWS Cognitoは、EUIDCのMicrosoft Azureが生成したuser_id(Microsoft_)を正しく入力することはできません。 部品の中のいくつかの文字は、adminLinkProviderForUSER関数を呼び出すときに(電子メー...

1  生産のAADを密接に鏡を表すDev Azure Active Directory(AAD)を維持するためのベストプラクティス?  ( Best practice for maintaining dev azure active directory aad that closely mirr ) 
私たちのチームには、生産AADに非常に密接に設定されているDEV AADですべての開発作業を行うことを望みます。このようにして、私たちの作品は生産で働くために変更される必要はありません。 今私たちのチームは: 生産AADテナント 本番購読 開発購読。 ...

0  Azure Graph API - 同意したアプリの後に無許可  ( Azure graph api unauthorized after consenting app ) 
グラフAPI URL https://graph.microsoft.com/v1を呼び出しようとしています。ネイティブアプリケーションから0 / me にアクセスが拒否されました。 ネイティブアプリからWeb API許可コントローラを呼び出すと、私は正常...

2  Outlook SSOトークンエラー13003 - ユーザーのIDタイプはサポートされていません  ( Outlook sso token error 13003 the identity type of the user is not supported ) 
メソッドを介してSSOトークンを取得しようとしているときにエラーが発生しました< Office.context.auth.getAccessTokenAsync <この記事。 WebおよびOutlookデスクトップクライアントのOutlook間で異なるエラ...

0  ネイティブ.NET認証サポートなしのASP.NET MVC WebアプリケーションへのマルチテナントOpenID統合  ( Multi tenant openid integration to asp net mvc web application without native n ) 
カスタム認証機能を備えたASP.NET MVC Webアプリケーション(.NET認証フレームワークを使用しない)。これで、マルチテナントサポートを使用してAzure Active Directoryと統合します。私は次の適用例をフォローしています、そしてサンプ...

0  AAD保護されたWebサイトからのUWPサイドロードアプリケーションの配布  ( Uwp side loaded app distribution from aad protected web site ) 
Webベースのサイドローディングの経験。これは、HTMLファイルと必要なリソースを出力するVS展開ツールを使用してかなり簡単です。私の目標はAzure Webアプリにアセットを公開し、 お知らせや提案をお願いします ...

4  Azure ADアプリケーションPowerShellを介してキーを追加します  ( Azure ad application adding a key via powershell ) 
PowerShellを使用してAzure ADアプリケーションにキーを追加しようとしています。残念ながら、私はAzure CLIを使って最初に試してみましたが、いくつかの研究といくつかのスタックオーバーフローの回答が見つかりました、これはできません。 Po...

4  MVCコントローラでベアラトークンを取得する方法  ( How do i get a bearer token in an mvc controller ) 
ハイブリッドWebアプリケーションを持っています。いくつかのものはMVCの方法で行われ、いくつかのものはJavaScript Ajax Postbacksを介して行われます。私はMVCアプリのAAD B2Cに対して認証しています。しかし、Clientside ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有