通过Powershell命令更改Azure Active Directory“回复URL”

时间:2016-07-14 10:39:56

标签: powershell azure azure-active-directory

为了自动化我们的构建过程,我一直在寻找通过Powershell脚本更改现有Active Directory应用程序的“回复URL”的可能性。

官方documentation只是介绍了一种方法,如何借助门户网站进行更改。

关于这个话题已经有了一个Github issue。但也许有人在过去面临类似的问题并解决了它?

2 个答案:

答案 0 :(得分:10)

使用Active Directory Powershell Module,这甚至更简单。 您首先需要安装模块,如下所示:

Install-Module -Name AzureAD

然后,您需要登录Azure AD。如果您在桌面上,可以使用Connect-AzureAD以交互方式完成此操作,这会显示一个要求您登录的弹出窗口。如果您是在CI环境中,您可以使用服务主体进行身份验证。

经过身份验证后,以下内容将完成此任务(请记住更改Azure AD应用程序ID(您通常会在MS的错误消息中获得{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
}

答案 1 :(得分:3)

作为替代方案,您可以将以下脚本放在控制台应用程序中,然后从Powershell脚本中调用此程序。

首先,请添加nuget包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名称,后跟&#34; .onmicrosoft.com&#34;。
  • ClientIdForThisApplication,您必须手动在应用程序下的AAD中添加上述控制台应用程序。 (作为Native Client应用程序)。在“配置”选项卡中,您将找到此应用程序的客户端ID。这只需要完成一次,您可以继续使用此应用程序(及其客户端ID)进行所有构建。
  • NameOfYourApplication,您希望更改的应用程序的名称,如您在AAD中所知。
  • http://YourNewReplyUrl/,您的新回复网址。

(小披露,我已经从我现有的代码中删除了上述代码,我想我已经复制了所有要求,但我还没有测试过上述结果。 )