Beispiel #1
0
        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"]]);
        }