Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 3 additions & 14 deletions eng/Versions.MsIdentity.props
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,14 @@
<!-- Ref packages -->
</PropertyGroup>
<PropertyGroup>
<VersionPrefix>0.0.1</VersionPrefix>
<VersionPrefix>1.0.0</VersionPrefix>
<PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
<IsServicingBuild Condition="'$(PreReleaseVersionLabel)' == 'servicing'">true</IsServicingBuild>
<IsServicingBuild Condition="'$(PreReleaseVersionLabel)' == 'servicing'">false</IsServicingBuild>
<!--
When StabilizePackageVersion is set to 'true', this branch will produce stable outputs for 'Shipping' packages
-->
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">false</StabilizePackageVersion>
<StabilizePackageVersion Condition="'$(StabilizePackageVersion)' == ''">true</StabilizePackageVersion>
<DotNetFinalVersionKind Condition="'$(StabilizePackageVersion)' == 'true'">release</DotNetFinalVersionKind>
</PropertyGroup>
<!-- Package versions for MSIdentity projects-->
<PropertyGroup>
<AzureIdentityVersion>1.3.0</AzureIdentityVersion>
<MicrosoftExtensionsConfigurationVersion>3.1.9</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsConfigurationBinderVersion>3.1.9</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationCommandLineVersion>3.1.9</MicrosoftExtensionsConfigurationCommandLineVersion>
<MicrosoftGraphVersion>3.25.0</MicrosoftGraphVersion>
<MicrosoftIdentityClientExtensionsMsalVersion>2.18.0</MicrosoftIdentityClientExtensionsMsalVersion>
<SystemTextJsonVersion>4.7.2</SystemTextJsonVersion>
<SystemCommandLineVersion>2.0.0-beta1.20574.7</SystemCommandLineVersion>
</PropertyGroup>
</Project>
13 changes: 13 additions & 0 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,17 @@
<SystemCollectionsImmutableVersion>6.0.0-preview.2.21154.6</SystemCollectionsImmutableVersion>
<SystemComponentModelAnnotationsVersion>6.0.0-preview.2.21154.6</SystemComponentModelAnnotationsVersion>
</PropertyGroup>

<!-- Package versions for MSIdentity projects-->
<PropertyGroup>
<AzureIdentityVersion>1.3.0</AzureIdentityVersion>
<MicrosoftExtensionsConfigurationVersion>3.1.9</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsConfigurationBinderVersion>3.1.9</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationCommandLineVersion>3.1.9</MicrosoftExtensionsConfigurationCommandLineVersion>
<MicrosoftGraphVersion>3.25.0</MicrosoftGraphVersion>
<MicrosoftIdentityClientExtensionsMsalVersion>2.18.0</MicrosoftIdentityClientExtensionsMsalVersion>
<SystemTextJsonVersion>4.7.2</SystemTextJsonVersion>
<SystemCommandLineVersion>2.0.0-beta1.20574.7</SystemCommandLineVersion>
</PropertyGroup>

</Project>
2 changes: 1 addition & 1 deletion scripts/install-msidentity.cmd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
set VERSION=0.0.1-dev
set VERSION=1.0.0-dev
set SRC_DIR=%cd%
set NUPKG=artifacts/packages/Debug/Shipping/

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -530,9 +530,12 @@ internal async Task Unregister(TokenCredential tokenCredential, ApplicationParam
var readApplication = apps.FirstOrDefault();
if (readApplication != null)
{
var clientId = readApplication.Id;
await graphServiceClient.Applications[$"{readApplication.Id}"]
.Request()
.DeleteAsync();

Console.WriteLine($"Unregistered the Azure AD w/ client id = {clientId}\n");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.Json;
using System.Threading.Tasks;
using Azure.Core;
using Microsoft.DotNet.MsIdentity.Properties;
Expand All @@ -14,7 +14,6 @@
using Microsoft.DotNet.MsIdentity.MicrosoftIdentityPlatformApplication;
using Microsoft.DotNet.MsIdentity.Project;


namespace Microsoft.DotNet.MsIdentity
{
/// <summary>
Expand All @@ -24,12 +23,15 @@ public class AppProvisioningTool : IMsAADTool
{
private ProvisioningToolOptions ProvisioningToolOptions { get; set; }

private string CommandName { get; }

private MicrosoftIdentityPlatformApplicationManager MicrosoftIdentityPlatformApplicationManager { get; } = new MicrosoftIdentityPlatformApplicationManager();

private ProjectDescriptionReader ProjectDescriptionReader { get; } = new ProjectDescriptionReader();

public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
public AppProvisioningTool(string commandName, ProvisioningToolOptions provisioningToolOptions)
{
CommandName = commandName;
ProvisioningToolOptions = provisioningToolOptions;
}

Expand All @@ -48,10 +50,7 @@ public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
}
else
{
if (ProvisioningToolOptions.Json == null || ProvisioningToolOptions.Json == false)
{
Console.WriteLine($"Detected project type {projectDescription.Identifier}. ");
}
Console.WriteLine($"Detected project type {projectDescription.Identifier}. ");
}

ProjectAuthenticationSettings projectSettings = InferApplicationParameters(
Expand All @@ -69,7 +68,7 @@ public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
provisioningToolOptionsBlazorServer.ProjectPath = Path.Combine(ProvisioningToolOptions.ProjectPath, "Server");
provisioningToolOptionsBlazorServer.ClientId = ProvisioningToolOptions.WebApiClientId;
provisioningToolOptionsBlazorServer.WebApiClientId = null;
AppProvisioningTool appProvisioningToolBlazorServer = new AppProvisioningTool(provisioningToolOptionsBlazorServer);
AppProvisioningTool appProvisioningToolBlazorServer = new AppProvisioningTool(CommandName, provisioningToolOptionsBlazorServer);
ApplicationParameters? applicationParametersServer = await appProvisioningToolBlazorServer.Run();

/// Processes the Blazorwasm client
Expand All @@ -78,7 +77,7 @@ public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
provisioningToolOptionsBlazorClient.WebApiClientId = applicationParametersServer?.ClientId;
provisioningToolOptionsBlazorClient.AppIdUri = applicationParametersServer?.AppIdUri;
provisioningToolOptionsBlazorClient.CalledApiScopes = $"{applicationParametersServer?.AppIdUri}/access_as_user";
AppProvisioningTool appProvisioningToolBlazorClient = new AppProvisioningTool(provisioningToolOptionsBlazorClient);
AppProvisioningTool appProvisioningToolBlazorClient = new AppProvisioningTool(CommandName, provisioningToolOptionsBlazorClient);
return await appProvisioningToolBlazorClient.Run();
}

Expand All @@ -102,7 +101,7 @@ public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
projectSettings.ApplicationParameters.EffectiveTenantId ?? projectSettings.ApplicationParameters.EffectiveDomain);

// Unregister the app
if (ProvisioningToolOptions.Unregister)
if (CommandName.Equals(Commands.UNREGISTER_APPLICATION_COMMAND, StringComparison.OrdinalIgnoreCase))
{
await UnregisterApplication(tokenCredential, projectSettings.ApplicationParameters);
return null;
Expand All @@ -118,35 +117,27 @@ public AppProvisioningTool(ProvisioningToolOptions provisioningToolOptions)
// Reconciliate code configuration and app registration
if (effectiveApplicationParameters != null)
{
if (ProvisioningToolOptions.Json ?? false)
bool appNeedsUpdate = Reconciliate(
projectSettings.ApplicationParameters,
effectiveApplicationParameters);

// Update appp registration if needed
if (appNeedsUpdate)
{
var jsonParameters = JsonSerializer.Serialize(effectiveApplicationParameters);
Console.WriteLine(jsonParameters);
await WriteApplicationRegistration(
summary,
effectiveApplicationParameters,
tokenCredential);
}
else
{
bool appNeedsUpdate = Reconciliate(
projectSettings.ApplicationParameters,
effectiveApplicationParameters);

// Update appp registration if needed
if (appNeedsUpdate)
{
await WriteApplicationRegistration(
summary,
effectiveApplicationParameters,
tokenCredential);
}

// Write code configuration if needed
WriteProjectConfiguration(
summary,
projectSettings,
effectiveApplicationParameters);
// Write code configuration if needed
WriteProjectConfiguration(
summary,
projectSettings,
effectiveApplicationParameters);

// Summarizes what happened
WriteSummary(summary);
}
// Summarizes what happened
WriteSummary(summary);
}

return effectiveApplicationParameters;
Expand Down Expand Up @@ -259,10 +250,7 @@ private bool Reconciliate(ApplicationParameters applicationParameters, Applicati
if (currentApplicationParameters == null && !ProvisioningToolOptions.Unregister)
{
currentApplicationParameters = await MicrosoftIdentityPlatformApplicationManager.CreateNewApp(tokenCredential, applicationParameters);
if (ProvisioningToolOptions.Json == null || ProvisioningToolOptions.Json == false)
{
Console.Write($"Created app {currentApplicationParameters.ClientId}. ");
}
Console.Write($"Created app {currentApplicationParameters.ClientId}. ");
}
return currentApplicationParameters;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ public class Commands
public const string LIST_AAD_APPS_COMMAND = "--list-aad-apps";
public const string LIST_SERVICE_PRINCIPALS_COMMAND = "--list-service-principals";
public const string LIST_TENANTS_COMMAND = "--list-tenants";
public const string REGISTER_APPLICATIION_COMMAND = "--register-application";
public const string UPDATE_APPLICATION_COMMAND = "--update-application";
public const string UNREGISTER_COMMAND = "--unregister";
public const string REGISTER_APPLICATIION_COMMAND = "--register-app";
public const string UPDATE_APPLICATION_COMMAND = "--update-app";
public const string UPDATE_PROJECT_COMMAND = "--update-project";
public const string UNREGISTER_APPLICATION_COMMAND = "--unregister-app";
public const string VALIDATE_APP_PARAMS_COMMAND = "--validate-app-params";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,21 @@
using Microsoft.DotNet.MsIdentity.AuthenticationParameters;
using Microsoft.DotNet.MsIdentity.DeveloperCredentials;
using Microsoft.DotNet.MsIdentity.MicrosoftIdentityPlatformApplication;

namespace Microsoft.DotNet.MsIdentity
{
internal class MsAADTool : IMsAADTool
{
private ProvisioningToolOptions ProvisioningToolOptions { get; set; }
private string _commandName { get; set; }
private string CommandName { get; }
public IGraphServiceClient GraphServiceClient { get; set; }
public IAzureManagementAuthenticationProvider AzureManagementAPI { get; set;}
private MsalTokenCredential TokenCredential { get; set; }

public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOptions)
{
ProvisioningToolOptions = provisioningToolOptions;
_commandName = commandName;
CommandName = commandName;
TokenCredential = new MsalTokenCredential(ProvisioningToolOptions.TenantId, ProvisioningToolOptions.Username);
GraphServiceClient = new GraphServiceClient(new TokenCredentialAuthenticationProvider(TokenCredential));
AzureManagementAPI = new AzureManagementAuthenticationProvider(TokenCredential);
Expand All @@ -33,7 +34,7 @@ public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOpt
string outputJsonString = string.Empty;
if (TokenCredential != null && GraphServiceClient != null)
{
switch(_commandName)
switch(CommandName)
{
//--list-aad-apps
case Commands.LIST_AAD_APPS_COMMAND:
Expand All @@ -50,7 +51,7 @@ public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOpt
default:
break;
}
if (ProvisioningToolOptions.Json.HasValue && ProvisioningToolOptions.Json.Value)
if (ProvisioningToolOptions.Json)
{
Console.WriteLine(outputJsonString);
}
Expand Down Expand Up @@ -79,9 +80,10 @@ internal async Task<string> PrintApplicationsList()

if (applicationList.Any())
{
if (ProvisioningToolOptions.Json.HasValue && ProvisioningToolOptions.Json.Value)
if (ProvisioningToolOptions.Json)
{
outputJsonString = JsonSerializer.Serialize(applicationList); }
outputJsonString = JsonSerializer.Serialize(applicationList);
}
else
{
Console.Write(
Expand Down Expand Up @@ -116,7 +118,7 @@ internal async Task<string> PrintServicePrincipalList()
}
if (servicePrincipalList.Any())
{
if (ProvisioningToolOptions.Json.HasValue && ProvisioningToolOptions.Json.Value)
if (ProvisioningToolOptions.Json)
{
outputJsonString = JsonSerializer.Serialize(servicePrincipalList);
}
Expand Down Expand Up @@ -175,7 +177,7 @@ internal async Task<string> PrintTenantsList()
}
}

if (ProvisioningToolOptions.Json.HasValue && ProvisioningToolOptions.Json.Value)
if (ProvisioningToolOptions.Json)
{
outputJsonString = JsonSerializer.Serialize(tenantList);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public string ProjectTypeIdentifier
/// <summary>
/// Format for console output for list commands.
/// </summary>
public bool? Json { get; set; }
public bool Json { get; set; } = false;

/// <summary>
/// Clones the options
Expand Down

This file was deleted.

4 changes: 2 additions & 2 deletions tools/dotnet-msidentity/MsAADToolFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ internal static IMsAADTool CreateTool(string commandName, ProvisioningToolOption
case Commands.LIST_TENANTS_COMMAND:
return new MsAADTool(commandName, provisioningToolOptions);
default:
return new AppProvisioningTool(provisioningToolOptions);
return new AppProvisioningTool(commandName, provisioningToolOptions);
}
}
}
}
}
Loading