private void Page_Load(object sender, System.EventArgs e) { if (Request.HttpMethod.Equals("get", StringComparison.OrdinalIgnoreCase)) { var oidcUtils = new OIDCUtilities(new Uri(Authority)); // Store Return Url in State var state = Convert.ToBase64String(Encoding.UTF8.GetBytes(Request.QueryString["ReturnUrl"])); // URL must be clean (no QueryString, etc) var callbackBuilder = new UriBuilder(Request.Url.AbsoluteUri); callbackBuilder.Query = null; var callback = callbackBuilder.Uri.AbsoluteUri; Response.Redirect(oidcUtils.BuildAuthorizeUrl(state, callback), true); } if (Request.HttpMethod.Equals("post", StringComparison.OrdinalIgnoreCase)) { var oidcUtils = new OIDCUtilities(new Uri(Authority)); // Pull out state and token var origUrl = Encoding.UTF8.GetString(Convert.FromBase64String(Request.Form["state"])); var idToken = Request.Form["id_token"]; // Validate then set Auth cookie and redirect var principal = oidcUtils.ValidateIdentityToken(idToken); FormsAuthentication.SetAuthCookie( principal.Identity.Name, false); Response.Redirect(origUrl); } }
public void BuildUri_Returns_Valid_Uri() { var oidcUtils = new OIDCUtilities(new Uri(authURL)); var auth = oidcUtils.BuildAuthorizeUrl("test", "https://local.com/callme"); var parser = new UriBuilder(auth); Assert.AreEqual("https", parser.Scheme); Assert.AreEqual("pes.pehosted.com", parser.Host); }
public void BuildUri_Returns_Has_Valid_Nonce() { var oidcUtils = new OIDCUtilities(new Uri(authURL)); var auth = oidcUtils.BuildAuthorizeUrl("test", "https://local.com/callme"); var parser = new UriBuilder(auth); var values = System.Web.HttpUtility.ParseQueryString(parser.Query); Assert.IsTrue(values.AllKeys.Contains("nonce")); Assert.IsNotNull(MemoryCache.Default[values["nonce"]]); }