Skip to content

Commit 1cb3536

Browse files
committed
Applied token configuration via appsettings
1 parent cd04cd5 commit 1cb3536

File tree

4 files changed

+35
-17
lines changed

4 files changed

+35
-17
lines changed

Microsoft.SCIM.WebHostSample/Controllers/TokenController.cs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.AspNetCore.Mvc;
2+
using Microsoft.Extensions.Configuration;
23
using Microsoft.IdentityModel.Tokens;
34
using System;
45
using System.Collections.Generic;
@@ -11,26 +12,32 @@ namespace Microsoft.SCIM.WebHostSample.Controllers
1112
{
1213
// Controller for generating a bearer token for authorization during testing.
1314
// This is not meant to replace proper Oauth for authentication purposes.
14-
[Route(ServiceConstants.RouteToken)]
15+
[Route("scim/token")]
1516
[ApiController]
16-
public class KeyController : ControllerBase
17+
public class TokenController : ControllerBase
1718
{
18-
private const int TokenLifetimeInMins = 120;
19+
private readonly IConfiguration _configuration;
20+
//private const int TokenLifetimeInMins = 120;
1921

20-
private static string GenerateJSONWebToken()
22+
public TokenController(IConfiguration Configuration)
23+
{
24+
_configuration = Configuration;
25+
}
26+
27+
private string GenerateJSONWebToken()
2128
{
2229
SymmetricSecurityKey securityKey =
23-
new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ServiceConstants.TokenIssuer));
30+
new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this._configuration["Token:IssuerSigningKey"]));
2431
SigningCredentials credentials =
2532
new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
2633

2734
DateTime startTime = DateTime.UtcNow;
28-
DateTime expiryTime = startTime.AddMinutes(KeyController.TokenLifetimeInMins);
35+
DateTime expiryTime = startTime.AddMinutes(double.Parse(this._configuration["Token:TokenLifetimeInMins"]));
2936

3037
JwtSecurityToken token =
3138
new JwtSecurityToken(
32-
ServiceConstants.TokenIssuer,
33-
ServiceConstants.TokenAudience,
39+
this._configuration["Token:TokenIssuer"],
40+
this._configuration["Token:TokenAudience"],
3441
null,
3542
notBefore: startTime,
3643
expires: expiryTime,
@@ -43,7 +50,7 @@ private static string GenerateJSONWebToken()
4350
[HttpGet]
4451
public ActionResult Get()
4552
{
46-
string tokenString = KeyController.GenerateJSONWebToken();
53+
string tokenString = this.GenerateJSONWebToken();
4754
return this.Ok(new { token = tokenString });
4855
}
4956

Microsoft.SCIM.WebHostSample/Startup.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.AspNetCore.Hosting;
99
using Microsoft.AspNetCore.Http;
1010
using Microsoft.AspNetCore.Routing;
11+
using Microsoft.Extensions.Configuration;
1112
using Microsoft.Extensions.DependencyInjection;
1213
using Microsoft.Extensions.Hosting;
1314
using Microsoft.IdentityModel.Tokens;
@@ -17,11 +18,15 @@ namespace Microsoft.SCIM.WebHostSample
1718
{
1819
public class Startup
1920
{
21+
private readonly IConfiguration _configuration;
22+
2023
public IMonitor MonitoringBehavior { get; set; }
2124
public IProvider ProviderBehavior { get; set; }
2225

23-
public Startup()
26+
public Startup(IConfiguration configuration)
2427
{
28+
this._configuration = configuration;
29+
2530
this.MonitoringBehavior = new ConsoleMonitor();
2631
this.ProviderBehavior = new InMemoryProvider();
2732
}
@@ -45,9 +50,9 @@ public void ConfigureServices(IServiceCollection services)
4550
ValidateAudience = false,
4651
ValidateLifetime = false,
4752
ValidateIssuerSigningKey = false,
48-
ValidIssuer = ServiceConstants.TokenIssuer,
49-
ValidAudience = ServiceConstants.TokenAudience,
50-
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(ServiceConstants.TokenIssuer))
53+
ValidIssuer = this._configuration["Token:TokenIssuer"],
54+
ValidAudience = this._configuration["Token:TokenAudience"],
55+
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(this._configuration["Token:IssuerSigningKey"]))
5156
};
5257
});
5358

Microsoft.SCIM.WebHostSample/appsettings.Development.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,11 @@
55
"Microsoft": "Warning",
66
"Microsoft.Hosting.Lifetime": "Information"
77
}
8+
},
9+
"Token": {
10+
"TokenAudience": "Microsoft.Security.Bearer",
11+
"TokenIssuer": "Microsoft.Security.Bearer",
12+
"IssuerSigningKey": "A1B2C3D4E5F6A1B2C3D4E5F6",
13+
"TokenLifetimeInMins": "120"
814
}
915
}

Microsoft.SystemForCrossDomainIdentityManagement/Service/ServiceConstants.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@ namespace Microsoft.SCIM
77
public static class ServiceConstants
88
{
99
public const string PathSegmentResourceTypes = "ResourceTypes";
10-
public const string PathSegmentToken = "token";
10+
//public const string PathSegmentToken = "token";
1111
public const string PathSegmentSchemas = "Schemas";
1212
public const string PathSegmentServiceProviderConfiguration = "ServiceProviderConfig";
1313

1414
public const string RouteGroups = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ProtocolConstants.PathGroups;
1515
public const string RouteResourceTypes = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ServiceConstants.PathSegmentResourceTypes;
1616
public const string RouteSchemas = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ServiceConstants.PathSegmentSchemas;
1717
public const string RouteServiceConfiguration = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ServiceConstants.PathSegmentServiceProviderConfiguration;
18-
public const string RouteToken = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ServiceConstants.PathSegmentToken;
18+
//public const string RouteToken = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ServiceConstants.PathSegmentToken;
1919
public const string RouteUsers = SchemaConstants.PathInterface + ServiceConstants.SeparatorSegments + ProtocolConstants.PathUsers;
2020

2121
public const string SeparatorSegments = "/";
2222

23-
public const string TokenAudience = "Microsoft.Security.Bearer";
24-
public const string TokenIssuer = "Microsoft.Security.Bearer";
23+
//public const string TokenAudience = "Microsoft.Security.Bearer";
24+
//public const string TokenIssuer = "Microsoft.Security.Bearer";
2525
}
2626
}

0 commit comments

Comments
 (0)