File: Provisioning\MicrosoftGraphApplication.cs
Web Access
Project: src\src\Aspire.Hosting.Azure.EntraId\Aspire.Hosting.Azure.EntraId.csproj (Aspire.Hosting.Azure.EntraId)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Azure.Provisioning;
using Azure.Provisioning.Primitives;
 
namespace Aspire.Hosting.Azure.EntraId.Provisioning;
 
/// <summary>
/// Models the Microsoft Graph application properties used by Entra registration provisioning.
/// </summary>
internal sealed class MicrosoftGraphApplication(string bicepIdentifier)
    : ProvisionableResource(bicepIdentifier, EntraIdBicepConstants.ApplicationResourceType, EntraIdBicepConstants.GraphApiVersion)
{
    public BicepValue<string> Id
    {
        get { Initialize(); return _id!; }
    }
    private BicepValue<string>? _id;
 
    public BicepValue<string> AppId
    {
        get { Initialize(); return _appId!; }
    }
    private BicepValue<string>? _appId;
 
    public BicepValue<string> DisplayName
    {
        get { Initialize(); return _displayName!; }
        set { Initialize(); _displayName!.Assign(value); }
    }
    private BicepValue<string>? _displayName;
 
    public BicepValue<string> UniqueName
    {
        get { Initialize(); return _uniqueName!; }
        set { Initialize(); _uniqueName!.Assign(value); }
    }
    private BicepValue<string>? _uniqueName;
 
    public BicepValue<string> SignInAudience
    {
        get { Initialize(); return _signInAudience!; }
        set { Initialize(); _signInAudience!.Assign(value); }
    }
    private BicepValue<string>? _signInAudience;
 
    public BicepValue<int> RequestedAccessTokenVersion
    {
        get { Initialize(); return _requestedAccessTokenVersion!; }
        set { Initialize(); _requestedAccessTokenVersion!.Assign(value); }
    }
    private BicepValue<int>? _requestedAccessTokenVersion;
 
    public BicepList<string> RedirectUris
    {
        get { Initialize(); return _redirectUris!; }
        set { Initialize(); _redirectUris!.Assign(value); }
    }
    private BicepList<string>? _redirectUris;
 
    public BicepValue<bool> EnableIdTokenIssuance
    {
        get { Initialize(); return _enableIdTokenIssuance!; }
        set { Initialize(); _enableIdTokenIssuance!.Assign(value); }
    }
    private BicepValue<bool>? _enableIdTokenIssuance;
 
    protected override void DefineProvisionableProperties()
    {
        base.DefineProvisionableProperties();
        _id = DefineProperty<string>(nameof(Id), ["id"], isOutput: true);
        _appId = DefineProperty<string>(nameof(AppId), ["appId"], isOutput: true);
        _displayName = DefineProperty<string>(nameof(DisplayName), ["displayName"], isRequired: true);
        _uniqueName = DefineProperty<string>(nameof(UniqueName), ["uniqueName"], isRequired: true);
        _signInAudience = DefineProperty<string>(nameof(SignInAudience), ["signInAudience"]);
        _requestedAccessTokenVersion = DefineProperty<int>(nameof(RequestedAccessTokenVersion), ["api", "requestedAccessTokenVersion"]);
        _redirectUris = DefineListProperty<string>(nameof(RedirectUris), ["web", "redirectUris"]);
        _enableIdTokenIssuance = DefineProperty<bool>(nameof(EnableIdTokenIssuance), ["web", "implicitGrantSettings", "enableIdTokenIssuance"]);
    }
}