示例#1
0
        public async Task <IActionResult> Index()
        {
            // GET + no parameters = metadata request
            if (!Request.QueryString.HasValue)
            {
                _logger.LogDebug("Start WS-Federation metadata request");

                var entity = await _metadata.GenerateAsync(Url.Action("Index", "WsFederation", null, Request.Scheme, Request.Host.Value));

                return(new MetadataResult(entity));
            }

            var url = Url.Action("Index", "WsFederation", null, Request.Scheme, Request.Host.Value) + Request.QueryString;

            _logger.LogDebug("Start WS-Federation request: {url}", url);

            // user can be null here (this differs from HttpContext.User where the anonymous user is filled in)
            var user = await _userSession.GetUserAsync();

            WsFederationMessage message = WsFederationMessage.FromUri(new Uri(url));
            var isSignin = message.IsSignInMessage;

            if (isSignin)
            {
                return(await ProcessSignInAsync(message, user));
            }
            var isSignout = message.IsSignOutMessage;

            if (isSignout)
            {
                return(await ProcessSignOutAsync(message));
            }

            return(BadRequest("Invalid WS-Federation request"));
        }
示例#2
0
        public void WsFederationAuthenticationMessage_Publics()
        {
            string issuerAdderss = @"http://www.gotjwt.com";
            string wreply        = @"http://www.relyingparty.com";
            string wct           = Guid.NewGuid().ToString();
            WsFederationMessage wsFederationMessage = new WsFederationMessage
            {
                IssuerAddress = issuerAdderss,
                Wreply        = wreply,
                Wct           = wct,
            };

            wsFederationMessage.SetParameter("bob", null);
            wsFederationMessage.Parameters.Add("bob", null);
            string uriString = wsFederationMessage.BuildRedirectUrl();
            Uri    uri       = new Uri(uriString);

            WsFederationMessage wsFederationMessageReturned = WsFederationMessage.FromQueryString(uri.Query);

            wsFederationMessageReturned.IssuerAddress = issuerAdderss;
            wsFederationMessageReturned.Parameters.Add("bob", null);
            Assert.IsTrue(MessageComparer.AreEqual(wsFederationMessage, wsFederationMessageReturned));

            wsFederationMessageReturned = WsFederationMessage.FromUri(uri);
            wsFederationMessageReturned.IssuerAddress = issuerAdderss;
            wsFederationMessageReturned.Parameters.Add("bob", null);
            Assert.IsTrue(MessageComparer.AreEqual(wsFederationMessage, wsFederationMessageReturned));
        }
        private WsFederationMessage GetSignInRequestMessage(string returnUrl)
        {
            var uri = new Uri("https://dummy.com" + returnUrl);
            WsFederationMessage message = WsFederationMessage.FromUri(uri);

            if (message.IsSignInMessage)
            {
                return(message);
            }
            return(null);
        }