Skip to content

Latest commit

 

History

History
311 lines (236 loc) · 20 KB

File metadata and controls

311 lines (236 loc) · 20 KB

11.1.0

New features

  • Added StoreWithSubjectName credential source. See PR #245.

11.0.0

Breaking changes

If you build code with the .NET 10 target framework and get this error:

error CS9260: Feature 'extensions' is not available in C# 13.0. Please use language version 14.0 or greater.

make sure you update the LangVersion property in your project to 14 or later.

AOT/NativeAOT Compatibility for .NET 10+

Made CredentialDescription AOT-compatible for .NET 10+ by using C# 14 extension properties. This is a binary breaking change (though source compatible) for .NET 10+ targets:

  • Removes Certificate and CachedValue as public properties from CredentialDescription when targeting .NET 10+
  • Adds extension properties with the same names and signatures for .NET 10+, providing property-style access
  • Maintains full source compatibility - no code changes required for consumers provided the .NET 10 code is built with C#14 or later.
  • Prevents AOT/NativeAOT configuration binding issues with reference-typed properties
  • Keeps existing behavior for older target frameworks (netstandard2.0, netstandard2.1, net462, net8.0, net9.0)

Technical details:

  • For .NET 10+: Certificate and CachedValue are implemented as extension properties (not visible to config binders)
  • For older TFMs: Certificate and CachedValue remain as regular public properties
  • LangVersion updated to 14 to enable C# 14 extension property syntax
  • Internal accessor methods (GetCertificateInternal, SetCertificateInternal, etc.) support extension properties

This enhancement ensures CredentialDescription works seamlessly in AOT/NativeAOT compilation scenarios while maintaining backward compatibility.

New features

  • Make CredentialDescription AOT-compatible via C# 14 extension properties (v11.0.0). See PR #238.

Bug fixes

  • Invalidate _cachedId in all property setters that affect Id computation. See PR #240.

Fundamentals

  • Add codebase navigation guides and architecture decision records. See PR #241.

10.0.0

Breaking changes

Rename IAuthorizationHeaderProvider2 to BoundAuthorizationHeaderProvider. This interface extends IAuthorizationHeaderProvider to create authorization headers with a token which is optionally bound to a certificate (for mTLS Pop). For details, see PR #232

In practice, it's unlikely that this breaking change affects anybody as the renamed interface was new in 9.6.0, and not yet used to the team's knowledge.

9.6.0

New features

  • Added new authorization header provider interface IAuthorizationHeaderProvider2 supporting token return with binding certificate, expanding certificate-based authentication scenarios. For details, see PR #223 and PR #228.
  • In the ID property of CredentialDescription, renamed ClientSecret to RedactedClientSecret to be more precise about what this is. For details, see PR #224.
  • Added "Thumbprint" to the ID property in CredentialDescription, enhancing traceability for credentials. For details, see PR #212.

Improvements and fundamentals

  • Updated support to .NET 10 GA, ensuring compatibility and access to latest platform features. For details, see PR #226.
  • Upgraded GitHub Actions workflows to v5 for both checkout and setup-dotnet, improving CI reliability and consistency. For details, see PR #222.
  • Synchronized README.md diagrams with the current public API surface to keep documentation up to date. See PR #220.
  • Fixed tests affected by recent internal changes. See PR #221.

9.5.0

New features

  • Expand Authorization header to support binding certificate for mTLS scenarios. For Details see #209

Fundamentals

  • Migrate repository agent rules from .clinerules to agents.md. For details, see #206
  • Update to .NET 10 RC 1 (10.0.100-rc.1.25451.107) with explicit SDK version.
    • Updated GitHub Actions workflow to use explicit .NET 10 RC 1 SDK version instead of wildcard
    • Updated Azure DevOps pipeline template to use explicit .NET 10 RC 1 SDK version
    • Verified compatibility with .NET 10 RC 1 breaking changes

9.4.0

New features

  • Add AdditionalResponseParameters and BindingCertificate to AcquireTokenResult. For details see PR 203
  • Add conditional targeting for NET 10. See PR 202
  • Add enum value for managed certificate in SourceType. For details, see PR 204

Thanks @tlupes made your first contribution in #204

9.3.0

New features

Added a new interface IAuthenticationSchemeInformationProvider to get the effective authentication scheme corresponding to an option name, depending on the platform. For details, see PR #200

9.2.0

New features

  • OperationResult and OperationError abstractions: Introduced a new OperationResult<TResult, TError> struct and OperationError base class. These provide a discriminated union for representing either a result or an error, improving error handling and propagation. See implementation in src/Microsoft.Identity.Abstractions/Results/OperationResult.cs and OperationError.cs.

  • DownstreamApiOptions extensibility: Added two new properties to DownstreamApiOptions:

    • ExtraHeaderParameters (IDictionary<string, string>?): Set extra headers in HTTP requests to downstream APIs.
    • ExtraQueryParameters (IDictionary<string, string>?): Set extra query parameters in HTTP requests to downstream APIs. This enables more flexible API calls and improved integration scenarios.

Fundamentals

  • Development guidelines and Copilot integration:

    • Introduced .clinerules/abstractions-guidelines.md, .clinerules/csharp-guidelines.md, .clinerules/ai-guidelines.md, and .github/copilot-instructions.md to formalize and document development, AI assistant, and C# code standards for contributors and tooling.
    • Solution file and README updated to reference these guidelines.
  • Analyzer and dependency updates:

    • Bumped analyzer versions in Directory.Build.props for better static analysis (BannedApiAnalyzers and MicrosoftCodeAnalysisPublicApiAnalyzers updated from 3.3.4 to 4.14.0).

9.1.0

New features

  • Add a new generic IAuthorizationHeaderProvider to have the possiblity of returning authorization header and metadata or error instead of throwing. For details see #172
  • Add Algorithm property to CredentialDescription to describe signing credentials. For details see #182
  • Adding serializer for CredentialDescription in .NET 8+. See #176

Foundamentals

  • Add dev container to work in Code Spaces. See PR #175
  • Adding a doc about CredentialDescription. See PR #181
  • Fixing AoT warnings: part 1 - non breaking. See PR #187
  • update Readme.md to explain the support policy for the library and the notion of LTS. See PRs 171, 183, , 185

9.0.0

New features

  • Added a new class named MicrosoftEntraApplicationOptions inheriting from IdentityApplicationOptions and from which MicrosoftIdentityApplicationOptions inherits. Moved the EntraID specific properties related to web APIs from MicrosoftIdentityApplicationOptions to MicrosoftEntraApplicationOptions. MicrosoftIdentityApplicationOptions now only contains the properties related to web apps and B2C. See #165 for details.
  • Added a Name property in MicrosoftEntraApplicationOptions to allow for dynamic discovery of ASP.NET Core authentication schemes / named options. See #168 for details.
  • Changed the way the ID property is computed in ClientCredentials. All sensitive data is also now replaced by a hash. See #163 for details.
  • Added XML comments with recommendations on which CredentialSource not to use in production. See #167 for details.

8.2.0

  • To support Federated Managed Identities a new parameter FmiPath was added to AcquireTokenOptions. See #161 for details.

8.1.1

**

8.1.0

New features:

  • To support certain Federation identity cases, you need to add an additional parameter called TokenExchangeAuthority. This parameter is necessary when the issuer (the entity that issues the token) for the token exchange URL is different from the application's issuer. See #155 for details.
  • Added a new interface ICustomSignedAssertionProvider for implementing custom signed assertion providers. This interface includes a Name property for configuration-friendly naming. See issue #153 for details.
  • Added extensibility to the CredentialDescription class to support custom signed assertion providers. This includes new properties CustomSignedAssertionProviderName and CustomSignedAssertionProviderData. See issue #146 for details.

8.0.0

Fundamentals:

  • Removed the Container and ValueOrReference from the public API of CredentialDescription. They were technical debt used for compatibility with Microsoft.Identity.Web 1.x, no longer necessary. See PR #151 for details.

7.2.1

Bug fix:

  • Id property in CredentialDescription was derived from secret values, primarily affecting logging (information level) of credential attempts in Microsoft.Identity.Web, it doesn't affect higher log levels because if the failure occurs, it indicates that a credential description has both a credential source that can fail (e.g., certificate) and the ClientSecret property set, which is not a typical scenario. See issue #147 for details.

7.2.0

New features:

  • Add AppHomeTenantId to MicrosoftIdentityApplicationOptions to allow multi-tenant applications to specify the AppHomeTenantId to be used for client credentials. See PR #142 and Id Web for details.

7.1.0

New features:

  • Add support for internal Microsoft services for token acquisition extensibility. See issue #135 for details.

Engineering excellence

  • Add publicAPI, bannedAPI and Async analyzers. See issue #136 for details.
  • Fix compiler warnings. See issue #137 for details.

7.0.0

Breaking changes:

  • Extends the 'IDownstreamApi' interface to include overrides with JsonTypeInfo<T> parameters for source generated JSON serialization. See PR for details.

6.0.0

Breaking changes:

  • Updates the 'IAuthorizationHeaderProvider' interface to include a new method 'GetAuthorizationHeaderAsync'. See issue #130 for details.

5.3.0

New features:

  • Added two new properties AcceptHeader and ContentType to DownstreamApiOptions class. See issue #123 for details.

Bug fix:

  • Fix file path for xml comment. See issue #117 for details.

5.2.0

5.1.0

API additions to enable support for managed identities.

5.0.0

  • Introduce a unique identifier for a CredentialDescription object. See PR for details.

  • Change AuthorizationHeaderProviderOptions to use a string instead of HttpMethod. See PR for details. This is a breaking change, but shouldn't affect you if you are using the configuration.

  • Add integrated API compatibility. See PR for details.

4.1.0

  • New Id property on CredentialDescription. See PR for details

4.0.0

  • Use Assembly Reference instead of PackageReference. See PR for details.

3.2.1

  • Improve the XML documentation (See #85 and #86)
  • Add unit tests for a 100% code coverage

3.2.0

  • Add RequiresUnreferencedCode attribute to IDownstreamApi and IDownstreamApiHttpMethods. See #82 for details.

3.1.0

  • Add ExtraQueryParameters to AcquireTokenOptions. See pr for details.

3.0.1

  • Re-add support for net462.

3.0.0

  • Rename JwtClaim to PopClaim in AcquireTokenOptions. See issue #74 for details.
  • Remove support for net462.

2.1.0

2.0.1

  • Rename CallAsync to CallApiAsync

2.0.0

  • Rename DownstreamRestApi to DownstreamApi.

1.2.0

  • Fixes 54

1.1.0

  • Releasing non-preview version

1.0.6-preview

1.0.5-preview

API Changes to improve the developer experience

  • New property TokenType on AcquireTokenResult.
  • ApplicationAuthenticationOptions renamed to IdentityApplicationOptions, and MicrosoftAuthenticationOptions to MicrosoftIdentityApplicationOptions
  • Removed ITokenAcquirerFactory.GetTokenAcquirer(string authority, string clientId, System.Collections.Generic.IEnumerable clientCredentials, string? region), as the same is doable with GetTokenAcquirer(IdentityApplicationOptions identityApplicationOptions)
  • Added helpers to IDownstreamRestApi for each of the Http methods.
  • Split DownstreamRestApiOptions into AuthorizationHeaderProviderOptions (now used in IAuthorizationHeaderProvider), and DownstreamRestApiOptions, which adds the scopes. A new derived class DownstreamRestApiOptionsReadOnlyHttpMethod enables a better developer experience in the IDownstreamWebApi methods which names starts with an HttpMethod (no confusion and risk to change the HTTP method in the delegate)

1.0.4-preview

Feature

  • Adding extensibility for credentials: see #30

1.0.3-preview

Bug fix:

  • Remove param from Interface.

1.0.0-preview

Bug fix:

  • CorrelationId should be a string and not a GUID. See issue for details.
  • Rename AuthenticationOptions to ApplicationAuthenticationOptions.

2.0.2-preview

Bug fix:

  • Remove the default region.

2.0.0

Initial release of Microsoft.Identity.Abstractions which brings interfaces and POCO classes used in all the Microsoft .NET authentication libraries provided by Identity and Network Access (IDNA) see ReadME.md for details.