2016-07-14 7 views
2

私は、ビルドプロセスを自動化するために、Powershellスクリプトを使用して既存のActive Directoryアプリケーションの "返信URL"を変更する可能性を探していました。Azure Active DirectoryのPowershellコマンドによる返信

公式documentationは、ウェブポータルの助けを借りて変更する方法を説明しています。

このトピックについては既にGithub issueがあります。しかし、誰かが過去に同様の問題に直面し、それを解決したのかもしれませんか?

+0

私は、このような何かを、PowerShellで直接行うのではなく、代わりにPowershellスクリプトから呼び出す、C#で小さなコンソールプログラムを構築した、Microsoft.Azure.ActiveDirectory.GraphClient'というナゲットパッケージを使って動作させました。もしあなたが望むなら、私はあなたにこのようにする方法の詳細を提供することができます。 –

+0

返信ありがとう、@TomWuyts。私は本当にいくつかの詳細をいただければ幸いです。 – ErBeEn

答えて

3

代わりに、次のスクリプトをコンソールアプリケーションに配置し、このプログラムをPowershellスクリプトから呼び出すことができます。

まず、ナゲットパッケージMicrosoft.Azure.ActiveDirectory.GraphClientを含めてください。あなたが変更する必要があります物事について

//First, log in into Azure: 
Uri servicePointUri = new Uri("https://graph.windows.net"); 
Uri serviceRoot = new Uri(servicePointUri, "YourTenantId"); 
ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, 
    async() => await AcquireTokenAsyncForUser("YourTenant.onmicrosoft.com", "ClientIdForThisApplication")); 
//A popup will now be shown to you, requiring you to log in into the AAD. 

//Find your application 
var existingApp = activeDirectoryClient.Applications.Where(s => s.DisplayName == "NameOfYourApplication").Take(1).ExecuteAsync().Result; 
if (existingApp != null && existingApp.CurrentPage != null && existingApp.CurrentPage.Count == 1) 
{ 
    //Application found 
    var app = existingApp.CurrentPage.First(); 

    //Change the Reply Url 
    app.ReplyUrls.Clear(); 
    app.ReplyUrls.Add("http://YourNewReplyUrl/"); 

    app.UpdateAsync().Wait(); 
} 

もう少し詳細:

  • YourTenantId、これはあなたの紺碧のアクティブディレクトリ(AAD)を識別するために使用されますGUIDです。
  • YourTenant.onmicrosoft.com、これは基本的にあなたのAADの名前に続いて ".onmicrosoft.com"です。
  • ClientIdForThisApplicationの場合は、上記のコンソールアプリケーションをアプリケーションの下に手動で追加する必要があります。 (ネイティブクライアントアプリケーションとして)。 [設定]タブには、このアプリケーションのクライアントIDが表示されます。これは一度だけ行う必要があります。すべてのビルドでこのアプリケーション(およびクライアントID)を使用し続けることができます。
  • NameOfYourApplication、あなたのAADで知られているように、変更したいアプリケーションの名前。
  • http://YourNewReplyUrl/、新しい返信用のURLです。

(小開示、私は私の既存のコードから一緒に上記のコードを廃棄してきた、私は私が必要と何のすべてをコピーしたが、私は上記の結果をテストしていないと思います。)で

5

Active Directory Powershell Moduleこれはさらに簡単です。 あなたは、まずこのように、モジュールをインストールする必要があります。

Install-Module -Name AzureAD 

が次にあなたはアズールADにログインする必要があります。これは対話的に行うことができます(デスクトップの場合は Connect-AzureAD)、ログインするようにポップアップが表示されます。 CI環境では、サービスプリンシパルを使用して認証することができます。

認証された場合には、仕事をする以下は(あなたが一般的に言ってMSからのエラーメッセージで取得一つである(アズールADアプリケーションIDを変更することを忘れないことReply URL <bladibla> is not valid for application <guid>とリプライURL:

$appId = "9e5675c3-7cd5-47c1-9d21-72204cd1fe2f" #Remember to change 
$newReplyUrl = "https://mywebapp.azurewebsites.net/SignIn/"; #Remember to change 

# Get Azure AD App 
$app = Get-AzureADApplication -Filter "AppId eq '$($appId)'" 

$replyUrls = $app.ReplyUrls; 

# Add Reply URL if not already in the list 

if ($replyUrls -NotContains $newReplyUrl) { 
    $replyUrls.Add($newReplyUrl) 
    Set-AzureADApplication -ObjectId $app.ObjectId -ReplyUrls $replyUrls 
} 
関連する問題