Skip to content

Commit b475447

Browse files
AnthonyYatesSuperOfficeDevNetmartincostello
authored
Add ClaimTypes.NameIdentifier and ClaimTypes.Email for SuperOffice (#465)
* Added support for ClaimTypes NameIdentifier and Email * Explicitly add ClaimTypes.NameIdentity * Update SubjectIdentifier description. Co-authored-by: Martin Costello <[email protected]> * Added test case for ClaimTypes.Email * Add using Add using statement to shorten the code. Co-authored-by: SuperOfficeDevNet <[email protected]> Co-authored-by: Martin Costello <[email protected]>
1 parent 97f1ef7 commit b475447

File tree

5 files changed

+16
-0
lines changed

5 files changed

+16
-0
lines changed

src/AspNet.Security.OAuth.SuperOffice/SuperOfficeAuthenticationConstants.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ public static class ClaimNames
7474
/// </summary>
7575
public const string PrimaryEmail = "http://schemes.superoffice.net/identity/so_primary_email_address";
7676

77+
/// <summary>
78+
/// Subject Identifier used to uniquely identify the user.
79+
/// </summary>
80+
public const string SubjectIdentifier = "sub";
81+
7782
/// <summary>
7883
/// Identifier used to exchange for a system user ticket.
7984
/// </summary>

src/AspNet.Security.OAuth.SuperOffice/SuperOfficeAuthenticationHandler.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ private async Task<string> ProcessIdTokenAndGetContactIdentifierAsync(
105105
contextIdentifier = claim.Value;
106106
}
107107

108+
if (claim.Type == SuperOfficeAuthenticationConstants.ClaimNames.SubjectIdentifier)
109+
{
110+
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, claim.Value));
111+
continue;
112+
}
113+
108114
if (Options.IncludeIdTokenAsClaims)
109115
{
110116
// May be possible same claim names from UserInformationEndpoint and IdToken.

src/AspNet.Security.OAuth.SuperOffice/SuperOfficeAuthenticationOptions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public SuperOfficeAuthenticationOptions()
3434
Scope.Add("openid");
3535

3636
ClaimActions.MapJsonKey(ClaimTypes.Name, PrincipalNames.FullName);
37+
ClaimActions.MapJsonKey(ClaimTypes.Email, PrincipalNames.EmailAddress);
3738

3839
ClaimActions.MapJsonKey(ClaimNames.AssociateId, PrincipalNames.AssociateId);
3940
ClaimActions.MapJsonKey(ClaimNames.Email, PrincipalNames.EmailAddress);

test/AspNet.Security.OAuth.Providers.Tests/SuperOffice/SuperOfficeTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
using System;
88
using System.IdentityModel.Tokens.Jwt;
9+
using System.Security.Claims;
910
using System.Threading.Tasks;
1011
using Microsoft.AspNetCore.Authentication;
1112
using Microsoft.Extensions.DependencyInjection;
@@ -40,6 +41,8 @@ protected internal override void RegisterAuthentication(AuthenticationBuilder bu
4041
}
4142

4243
[Theory]
44+
[InlineData(ClaimTypes.NameIdentifier, "[email protected]")]
45+
[InlineData(ClaimTypes.Email, "[email protected]")]
4346
[InlineData(SuperOfficeAuthenticationConstants.PrincipalNames.BusinessId, "4")]
4447
[InlineData(SuperOfficeAuthenticationConstants.PrincipalNames.CategoryId, "4")]
4548
[InlineData(SuperOfficeAuthenticationConstants.PrincipalNames.ContactId, "2")]

test/AspNet.Security.OAuth.Providers.Tests/SuperOffice/bundle.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"ContactId": 2,
2424
"CountryId": 826,
2525
"DatabaseContextIdentifier": "Cust12345",
26+
"EMailAddress": "[email protected]",
2627
"FunctionRights": [ "allow-bulk-export" ],
2728
"GroupId": 2,
2829
"HomeCountryId": 826,

0 commit comments

Comments
 (0)