in src/CustomerSite/Startup.cs [58:134]
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
var config = new SaaSApiClientConfiguration()
{
AdAuthenticationEndPoint = this.Configuration["SaaSApiConfiguration:AdAuthenticationEndPoint"],
ClientId = this.Configuration["SaaSApiConfiguration:ClientId"],
ClientSecret = this.Configuration["SaaSApiConfiguration:ClientSecret"],
MTClientId = this.Configuration["SaaSApiConfiguration:MTClientId"],
FulFillmentAPIBaseURL = this.Configuration["SaaSApiConfiguration:FulFillmentAPIBaseURL"],
FulFillmentAPIVersion = this.Configuration["SaaSApiConfiguration:FulFillmentAPIVersion"],
GrantType = this.Configuration["SaaSApiConfiguration:GrantType"],
Resource = this.Configuration["SaaSApiConfiguration:Resource"],
SaaSAppUrl = this.Configuration["SaaSApiConfiguration:SaaSAppUrl"],
SignedOutRedirectUri = this.Configuration["SaaSApiConfiguration:SignedOutRedirectUri"],
TenantId = this.Configuration["SaaSApiConfiguration:TenantId"],
Environment = this.Configuration["SaaSApiConfiguration:Environment"]
};
var creds = new ClientSecretCredential(config.TenantId.ToString(), config.ClientId.ToString(), config.ClientSecret);
services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.Cookie.MaxAge = options.ExpireTimeSpan;
options.SlidingExpiration = true;
})
.AddOpenIdConnect(options =>
{
options.Authority = $"{config.AdAuthenticationEndPoint}/common/v2.0";
options.ClientId = config.MTClientId;
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.CallbackPath = "/Home/Index";
options.SignedOutRedirectUri = config.SignedOutRedirectUri;
options.TokenValidationParameters.NameClaimType = ClaimConstants.CLAIM_SHORT_NAME;
options.TokenValidationParameters.ValidateIssuer = false;
});
services
.AddTransient<IClaimsTransformation, CustomClaimsTransformation>()
.AddScoped<ExceptionHandlerAttribute>()
.AddScoped<RequestLoggerActionFilter>();
if (!Uri.TryCreate(config.FulFillmentAPIBaseURL, UriKind.Absolute, out var fulfillmentBaseApi))
{
fulfillmentBaseApi = new Uri("https://marketplaceapi.microsoft.com/api");
}
services
.AddSingleton<IFulfillmentApiService>(new FulfillmentApiService(new MarketplaceSaaSClient(fulfillmentBaseApi, creds), config, new FulfillmentApiClientLogger()))
.AddSingleton<SaaSApiClientConfiguration>(config)
.AddSingleton<ValidateJwtToken>();
// Add the assembly version
services.AddSingleton<IAppVersionService>(new AppVersionService(Assembly.GetExecutingAssembly()?.GetName()?.Version));
services
.AddDbContext<SaasKitContext>(options => options.UseSqlServer(this.Configuration.GetConnectionString("DefaultConnection")));
InitializeRepositoryServices(services);
services.AddMvc(option => {
option.EnableEndpointRouting = false;
option.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});
}