/// <summary> /// Gets the sign in URL. /// </summary> /// <param name="returnUrl">The return url.</param> /// <param name="state">The state.</param> /// <returns> /// The sign in url. /// </returns> public Task <Uri> GetSignInUrlAsync(Uri returnUrl, string state) { if (returnUrl == null) { throw new ArgumentNullException(nameof(returnUrl)); } if (state == null) { throw new ArgumentNullException(nameof(state)); } if (CustomAccountProviderManager.ValidateReturnUrl(returnUrl)) { var tenant = CustomAccountProviderManager.GetTenantUrlSegment(HttpContext.Current.Request); return(Task.FromResult( new Uri( string.Format( CultureInfo.InvariantCulture, string.Format(CultureInfo.InvariantCulture, CustomAccountProviderManagerFactory.CustomAccountProviderLogonUrl, tenant) + "?returnUrl={0}&state={1}", returnUrl.UrlEncode(), state.Base64ToBase64Url())))); } else { throw new ArgumentOutOfRangeException(nameof(returnUrl), "Invalid returnUrl"); } }
/// <summary> /// Gets the sign out URL. /// </summary> /// <param name="name">The name claim of the user.</param> /// <param name="privatePersonalIdentifier">The private personal identifier of the user.</param> /// <param name="returnUrl">The return URL.</param> /// <returns> /// The sign out url. /// </returns> public Uri GetSignOutUrl(Claim name, Claim privatePersonalIdentifier, Uri returnUrl) { var tenant = CustomAccountProviderManager.GetTenantUrlSegment(HttpContext.Current.Request); return(new Uri(string.Format(CultureInfo.InvariantCulture, CustomAccountProviderManagerFactory.CustomAccountProviderLogOffUrl, tenant, returnUrl.UrlEncode()))); }