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")); }
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); }