| File: Provisioning\FederatedIdentityCredential.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 a federated identity credential on an Entra application registration. /// </summary> /// <remarks> /// The Microsoft Graph Bicep extension names a child resource as <c>'{applicationUniqueName}/{credentialName}'</c>. /// See <see href="https://learn.microsoft.com/graph/templates/reference/applications/federatedidentitycredentials"/>. /// </remarks> internal sealed class FederatedIdentityCredential(string bicepIdentifier) : ProvisionableResource(bicepIdentifier, EntraIdBicepConstants.FederatedIdentityCredentialResourceType, EntraIdBicepConstants.GraphApiVersion) { public BicepValue<string> Name { get { Initialize(); return _name!; } set { Initialize(); _name!.Assign(value); } } private BicepValue<string>? _name; public BicepValue<string> Issuer { get { Initialize(); return _issuer!; } set { Initialize(); _issuer!.Assign(value); } } private BicepValue<string>? _issuer; public BicepValue<string> Subject { get { Initialize(); return _subject!; } set { Initialize(); _subject!.Assign(value); } } private BicepValue<string>? _subject; public BicepList<string> Audiences { get { Initialize(); return _audiences!; } set { Initialize(); _audiences!.Assign(value); } } private BicepList<string>? _audiences; protected override void DefineProvisionableProperties() { base.DefineProvisionableProperties(); _name = DefineProperty<string>(nameof(Name), ["name"], isRequired: true); _issuer = DefineProperty<string>(nameof(Issuer), ["issuer"], isRequired: true); _subject = DefineProperty<string>(nameof(Subject), ["subject"], isRequired: true); _audiences = DefineListProperty<string>(nameof(Audiences), ["audiences"], isRequired: true); } }