protected override void ProcessCore(IdentityProvidersArgs args) { Assert.ArgumentNotNull(args, "args"); IdentityProvider identityProvider = this.GetIdentityProvider(); string authenticationType = this.GetAuthenticationType(); //Settings from config string clientId = Settings.GetSetting("MyProject.ClientId"); string clientSecret = Settings.GetSetting("MyProject.ClientSecret"); string pingFederateUrl = Settings.GetSetting("MyProject.PingFederateUrl"); string callbackPath = Settings.GetSetting("MyProject.CallbackPath"); var provider = new PingFederateAuthenticationProvider() { OnAuthenticated = (context) => { //Log token, only if need to check all available values inside it else comment out this line. Sitecore.Diagnostics.Log.Info(context.Identity.Claims.FirstOrDefault(x => x.Type == "id_token").Value, this); //Add additional claims for property mapping as this library has limited mappings covered inside context.Identity.AddClaim(new Claim("uid", context.User.Value <string>("uid"))); context.Identity.AddClaim(new Claim("mail", context.User.Value <string>("mail"))); context.Identity.AddClaim(new Claim("displayName", context.User.Value <string>("displayName"))); //Add additional claims for groups/memberOf mapping as this library has limited mappings covered inside if (context.User.Value <JArray>("memberOf") != null) { foreach (var groups in context.User.Value <JArray>("memberOf")) { context.Identity.AddClaim(new Claim("memberOf", GetMemberGroup(groups.Value <string>()))); } } //Transform all mappings ClaimsIdentity identity = context.Identity; foreach (Transformation current in identityProvider.Transformations) { current.Transform(identity, new TransformationContext(FederatedAuthenticationConfiguration, identityProvider)); } return(System.Threading.Tasks.Task.FromResult(0)); } }; var options = new PingFederateAuthenticationOptions(); options.AuthenticationType = GetAuthenticationType(); options.ClientId = clientId; options.ClientSecret = clientSecret; options.Provider = provider; options.PingFederateUrl = pingFederateUrl; options.CallbackPath = new PathString(callbackPath); args.App.UsePingFederateAuthentication(options); }
public void Contructor_Null_Parameters_Returns_PingFederateAuthenticationProvider_Null_Properties() { //Act var pingFederateAuthenticationProvider = new PingFederateAuthenticationProvider(null, null, null, null); //Assert Assert.IsInstanceOfType(pingFederateAuthenticationProvider, typeof(PingFederateAuthenticationProvider)); Assert.AreEqual(null, pingFederateAuthenticationProvider.RequestUrl); Assert.AreEqual(null, pingFederateAuthenticationProvider.ClientId); Assert.AreEqual(null, pingFederateAuthenticationProvider.ClientSecret); Assert.AreEqual(null, pingFederateAuthenticationProvider.XClientIdHeader); }
public void Contructor_Right_Parameters_Returns_PingFederateAuthenticationProvider_Right_Properties() { //Arrange //all necessary variables already set //Act var pingFederateAuthenticationProvider = new PingFederateAuthenticationProvider(_requestUrl, _clientId, _clientSecret, _xClientIdHeader); //Assert Assert.IsInstanceOfType(pingFederateAuthenticationProvider, typeof(PingFederateAuthenticationProvider)); Assert.AreEqual(_requestUrl, pingFederateAuthenticationProvider.RequestUrl); Assert.AreEqual(_clientId, pingFederateAuthenticationProvider.ClientId); Assert.AreEqual(_clientSecret, pingFederateAuthenticationProvider.ClientSecret); Assert.AreEqual(_xClientIdHeader, pingFederateAuthenticationProvider.XClientIdHeader); }