public static Combine ( string hostOrPathPortion, string pathPortion ) : string | ||
hostOrPathPortion | string | The left-hand side of the Url to be combined |
pathPortion | string | The right-hand side of the Url to be combined |
리턴 | string |
/// <summary> /// Constructs a URL used to check the validitiy of a service ticket, with or without a proxy /// callback URL, and with or without requiring renewed credentials. /// </summary> /// <remarks>See CAS Protocol specification, section 2.5</remarks> /// <param name="serviceTicket">The service ticket to validate.</param> /// <param name="renew"> /// Whether or not renewed credentials are required. If True, ticket validation /// will fail for Single Sign On credentials. /// </param> /// <param name="gateway"> /// whether or not to include gatewayResponse=true in the request (client specific). /// </param> /// <param name="customParameters">custom parameters to add to the validation URL</param> /// <returns>The service ticket validation URL to use</returns> public string ConstructValidateUrl(string serviceTicket, bool gateway, bool renew, NameValueCollection customParameters) { if (gateway && renew) { throw new ArgumentException("Gateway and Renew parameters are mutually exclusive and cannot both be True"); } EnhancedUriBuilder ub = new EnhancedUriBuilder(EnhancedUriBuilder.Combine(Settings.CasServerUrlPrefix, _ticketValidatorFactory.Value.TicketValidator.UrlSuffix)); ub.QueryItems.Add(_ticketValidatorFactory.Value.TicketValidator.ServiceParameterName, HttpUtility.UrlEncode(ConstructServiceUrl(gateway))); ub.QueryItems.Add(_ticketValidatorFactory.Value.TicketValidator.ArtifactParameterName, HttpUtility.UrlEncode(serviceTicket)); if (renew) { ub.QueryItems.Set("renew", "true"); } if (customParameters != null) { for (int i = 0; i < customParameters.Count; i++) { string key = customParameters.AllKeys[i]; string value = customParameters[i]; ub.QueryItems.Add(key, value); } } return(ub.Uri.AbsoluteUri); }
/// <summary> /// Constructs the URL to use for redirection to the CAS server for single /// signout. The CAS server will invalidate the ticket granting ticket and /// redirect back to the current page. The web application must then call /// ClearAuthCookie and revoke the ticket from the ServiceTicketManager to sign /// the client out. /// </summary> /// <returns>the redirection URL to use, not encoded</returns> public string ConstructSingleSignOutRedirectUrl() { // TODO: Make "logout" configurable EnhancedUriBuilder ub = new EnhancedUriBuilder(EnhancedUriBuilder.Combine(Settings.CasServerUrlPrefix, "logout")); ub.QueryItems.Set(_ticketValidatorFactory.Value.TicketValidator.ServiceParameterName, HttpUtility.UrlEncode(ConstructServiceUrl(false))); return(ub.Uri.AbsoluteUri); }
/// <summary> /// Constructs a proxy ticket request URL containing both a proxy granting /// ticket and a URL Encoded targetServiceUrl. The URL returned will generally only /// be executed by the CAS client as a part of a proxy redirection in /// CasAuthentication.ProxyRedirect(...) or CasAuthentication.GetProxyTicketIdFor(...) /// but may also be used by applications which require low-level access to the proxy /// ticket request functionality. /// </summary> /// <param name="proxyGrantingTicketId"> /// The proxy granting ticket used to authorize the request for a proxy ticket on the /// CAS server /// </param> /// <param name="targetService"> /// The target service URL to request a proxy ticket request URL for /// </param> /// <returns>The URL to use to request a proxy ticket for the targetService specified</returns> public string ConstructProxyTicketRequestUrl(string proxyGrantingTicketId, string targetService) { // TODO: Make "proxy" configurable. EnhancedUriBuilder ub = new EnhancedUriBuilder(EnhancedUriBuilder.Combine(Settings.CasServerUrlPrefix, "proxy")); ub.QueryItems.Add("pgt", proxyGrantingTicketId); ub.QueryItems.Add("targetService", HttpUtility.UrlEncode(targetService)); return(ub.Uri.AbsoluteUri); }