Skip to content

Commit 8b2d68e

Browse files
authored
Merge branch 'main' into trwalke/ClientClaims
Signed-off-by: Jean-Marc Prieur <[email protected]>
2 parents d07ea26 + cd2be5f commit 8b2d68e

File tree

12 files changed

+52
-29
lines changed

12 files changed

+52
-29
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22
<PropertyGroup>
33
<!-- This should be passed from the VSTS build -->
4-
<MicrosoftIdentityAbstractionsVersion Condition="'$(MicrosoftIdentityAbstractionsVersion)' == ''">9.6.0</MicrosoftIdentityAbstractionsVersion>
4+
<MicrosoftIdentityAbstractionsVersion Condition="'$(MicrosoftIdentityAbstractionsVersion)' == ''">10.0.0</MicrosoftIdentityAbstractionsVersion>
55
<!-- This will generate AssemblyVersion, AssemblyFileVersion and AssemblyInformationVersion -->
66
<Version>$(MicrosoftIdentityAbstractionsVersion)</Version>
77
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)\build\35MSSharedLib1024.snk</AssemblyOriginatorKeyFile>

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@ namespace TokenAcquisition {
185185
}
186186
187187
class IAuthorizationHeaderProvider { <<interface>> }
188-
class IAuthorizationHeaderProvider2 { <<interface>> }
189188
class IAuthorizationHeaderProvider_TResult_ { <<interface>> }
189+
class IBoundAuthorizationHeaderProvider { <<interface>> }
190190
class IDownstreamApi { <<interface>>
191191
+CallApiAsync(...)
192192
+CallApiForUserAsync(...)
@@ -423,8 +423,8 @@ It's also possible (and recommended) to use higher level APIs:
423423
- IAuthorizationHeaderProvider is the component that provides the authorization header, delegating to the ITokenAcquirer.
424424
Whereas ITokenAcquirer only knows about tokens, IAuthorizationHeaderProvider knows about protocols (for instance bearer,
425425
Pop, etc ...)
426-
- IAuthorizationHeaderProvider2 extends IAuthorizationHeaderProvider to provide authorization headers along with
427-
bound certificate information, useful for scenarios requiring certificate binding details.
426+
- IBoundAuthorizationHeaderProvider returns authorization headers along with bound certificate information, useful for
427+
scenarios requiring certificate binding details.
428428

429429
```mermaid
430430
classDiagram
@@ -461,10 +461,8 @@ It's also possible (and recommended) to use higher level APIs:
461461
+Task&lt;string&gt; CreateAuthorizationHeaderForAppAsync(string scopes, AuthorizationHeaderProviderOptions downstreamApiOptions, CancellationToken cancellationToken)
462462
+Task&lt;string&gt; CreateAuthorizationHeaderAsync(IEnumerable&lt;string&gt; scopes, AuthorizationHeaderProviderOptions options, ClaimsPrincipal claimsPrincipal, CancellationToken cancellationToken)
463463
}
464-
class IAuthorizationHeaderProvider2 { <<interface>>
465-
+Task&lt;AuthorizationHeaderInformation&gt; CreateAuthorizationHeaderBoundForUserAsync(IEnumerable&lt;string&gt; scopes, AuthorizationHeaderProviderOptions authorizationHeaderProviderOptions, ClaimsPrincipal claimsPrincipal, CancellationToken cancellationToken)
466-
+Task&lt;AuthorizationHeaderInformation&gt; CreateAuthorizationHeaderBoundForAppAsync(string scopes, AuthorizationHeaderProviderOptions downstreamApiOptions, CancellationToken cancellationToken)
467-
+Task&lt;AuthorizationHeaderInformation&gt; CreateAuthorizationHeaderBoundAsync(IEnumerable&lt;string&gt; scopes, AuthorizationHeaderProviderOptions options, ClaimsPrincipal claimsPrincipal, CancellationToken cancellationToken)
464+
class IBoundAuthorizationHeaderProvider { <<interface>>
465+
+Task&lt;OperationResult&lt;AuthorizationHeaderInformation, AuthorizationHeaderError&gt;&gt; CreateBoundAuthorizationHeaderAsync(DownstreamApiOptions downstreamApiOptions, ClaimsPrincipal claimsPrincipal, CancellationToken cancellationToken)
468466
}
469467
class IDownstreamApi { <<interface>>
470468
+Task&lt;HttpResponseMessage&gt; CallApiAsync(DownstreamApiOptions downstreamApiOptions, ClaimsPrincipal user, HttpContent content, CancellationToken cancellationToken)

agents.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ Through its well-designed abstractions and interfaces, Microsoft.Identity.Abstra
169169
- ITokenAcquirer - Core interface for token acquisition
170170
- ITokenAcquirerFactory - Factory of Token acquirers
171171
- IAuthorizationHeaderProvider - creates authorization headers (getting tokens and building the protocol string)
172-
- IAuthorizationHeaderProvider2 - extends IAuthorizationHeaderProvider to provide authorization headers with bound certificate information
172+
- IBoundAuthorizationHeaderProvider - creates authorization headers with token, which is optionally bound to a certififcate
173173
- IDownstreamApi - call downstream APIs in an authenticated way.
174174

175175
### Development Guidelines

src/Microsoft.Identity.Abstractions/DownstreamApi/IAuthorizationHeaderProvider2.cs

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using System.Security.Claims;
5+
using System.Threading;
6+
using System.Threading.Tasks;
7+
8+
namespace Microsoft.Identity.Abstractions
9+
{
10+
/// <summary>
11+
/// Creates an authorization header value that the caller can use to access a protected web API, which supports either unbound or
12+
/// bound to a certificate (for example, in an mTLS PoP scenario) tokens.
13+
/// </summary>
14+
public interface IBoundAuthorizationHeaderProvider
15+
{
16+
/// <summary>
17+
/// Creates the authorization header used to call a protected web API with either unbound or bound to certificate tokens.
18+
/// </summary>
19+
/// <param name="downstreamApiOptions">Information about the API that will be called and token acquisition options.</param>
20+
/// <param name="claimsPrincipal">Inbound authentication elements. In a web API, this is usually the result of the
21+
/// validation of a token. In a web app, this would be information about the signed-in user. This is not useful in
22+
/// daemon applications. In Microsoft.Identity.Web you rarely need to provide this parameter as it's inferred from the
23+
/// context.</param>
24+
/// <param name="cancellationToken">Cancellation token.</param>
25+
/// <returns>A result which contains authorization token with optional bound certificate</returns>
26+
Task<OperationResult<AuthorizationHeaderInformation, AuthorizationHeaderError>> CreateBoundAuthorizationHeaderAsync(
27+
DownstreamApiOptions downstreamApiOptions,
28+
ClaimsPrincipal? claimsPrincipal = null,
29+
CancellationToken cancellationToken = default);
30+
}
31+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#nullable enable
2-
Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider2
2+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider
3+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider.CreateBoundAuthorizationHeaderAsync(Microsoft.Identity.Abstractions.DownstreamApiOptions! downstreamApiOptions, System.Security.Claims.ClaimsPrincipal? claimsPrincipal = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.Identity.Abstractions.OperationResult<Microsoft.Identity.Abstractions.AuthorizationHeaderInformation!, Microsoft.Identity.Abstractions.AuthorizationHeaderError!>>
34
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.get -> System.Collections.Generic.IDictionary<string!, string!>?
45
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.set -> void
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#nullable enable
2-
Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider2
2+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider
3+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider.CreateBoundAuthorizationHeaderAsync(Microsoft.Identity.Abstractions.DownstreamApiOptions! downstreamApiOptions, System.Security.Claims.ClaimsPrincipal? claimsPrincipal = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.Identity.Abstractions.OperationResult<Microsoft.Identity.Abstractions.AuthorizationHeaderInformation!, Microsoft.Identity.Abstractions.AuthorizationHeaderError!>>
34
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.get -> System.Collections.Generic.IDictionary<string!, string!>?
45
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.set -> void
6+
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#nullable enable
2-
Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider2
2+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider
3+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider.CreateBoundAuthorizationHeaderAsync(Microsoft.Identity.Abstractions.DownstreamApiOptions! downstreamApiOptions, System.Security.Claims.ClaimsPrincipal? claimsPrincipal = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.Identity.Abstractions.OperationResult<Microsoft.Identity.Abstractions.AuthorizationHeaderInformation!, Microsoft.Identity.Abstractions.AuthorizationHeaderError!>>
34
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.get -> System.Collections.Generic.IDictionary<string!, string!>?
45
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.set -> void
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#nullable enable
2-
Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider2
2+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider
3+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider.CreateBoundAuthorizationHeaderAsync(Microsoft.Identity.Abstractions.DownstreamApiOptions! downstreamApiOptions, System.Security.Claims.ClaimsPrincipal? claimsPrincipal = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.Identity.Abstractions.OperationResult<Microsoft.Identity.Abstractions.AuthorizationHeaderInformation!, Microsoft.Identity.Abstractions.AuthorizationHeaderError!>>
34
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.get -> System.Collections.Generic.IDictionary<string!, string!>?
45
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.set -> void
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#nullable enable
2-
Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider2
2+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider
3+
Microsoft.Identity.Abstractions.IBoundAuthorizationHeaderProvider.CreateBoundAuthorizationHeaderAsync(Microsoft.Identity.Abstractions.DownstreamApiOptions! downstreamApiOptions, System.Security.Claims.ClaimsPrincipal? claimsPrincipal = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task<Microsoft.Identity.Abstractions.OperationResult<Microsoft.Identity.Abstractions.AuthorizationHeaderInformation!, Microsoft.Identity.Abstractions.AuthorizationHeaderError!>>
34
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.get -> System.Collections.Generic.IDictionary<string!, string!>?
45
Microsoft.Identity.Abstractions.MicrosoftEntraApplicationOptions.ClientAssertionClaims.set -> void

0 commit comments

Comments
 (0)