Esempio n. 1
0
        public string GetCodeGrantFlowUrl(PermissionsRequestType[] scope, AuthenticationPromptType prompt = AuthenticationPromptType.None, string state = "")
        {
            var authorizationUrl = new StringBuilder(AuthorizeBaseUrl);

            AppendGeneralParameters(scope, prompt, state, authorizationUrl);

            authorizationUrl.Append($"&response_type=code");

            return(authorizationUrl.ToString());
        }
Esempio n. 2
0
        public string GetImplicitGrantFlowUrl(PermissionsRequestType[] scope, AuthenticationPromptType prompt = AuthenticationPromptType.None, ExpiryType expiresIn = ExpiryType.OneDay, string state = "")
        {
            var authorizationUrl = new StringBuilder(AuthorizeBaseUrl);

            AppendGeneralParameters(scope, prompt, state, authorizationUrl);

            authorizationUrl.Append($"&response_type=token");
            authorizationUrl.Append($"&expires_in={expiresIn}");

            return(authorizationUrl.ToString());
        }
Esempio n. 3
0
        public string GetCodeGrantFlowWithPkceUrl(PermissionsRequestType[] scope, AuthenticationPromptType prompt = AuthenticationPromptType.None, string state = "")
        {
            var authorizationUrl = new StringBuilder(AuthorizeBaseUrl);

            AppendGeneralParameters(scope, prompt, state, authorizationUrl);

            if (!string.IsNullOrWhiteSpace(_internalCodeVerifier))
            {
                //TODO throw ex
            }

            _internalCodeVerifier = Helpers.ToBase64UrlEncodedString(Encoding.ASCII.GetBytes(Guid.NewGuid().ToString("X")));

            authorizationUrl.Append($"&response_type=code");
            authorizationUrl.Append($"&code_challenge_method=S256"); //TODO add note about not supporting 'plain'
            authorizationUrl.Append($"&code_challenge={Helpers.ToBase64UrlEncodedString(SHA256.Create().ComputeHash(Encoding.ASCII.GetBytes(_internalCodeVerifier)))}");

            return(authorizationUrl.ToString());
        }
Esempio n. 4
0
        private void AppendGeneralParameters(PermissionsRequestType[] scope, AuthenticationPromptType prompt, string state, StringBuilder authorizationUrl)
        {
            authorizationUrl.Append($"?client_id={ApplicationCredentials.ClientId}");
            authorizationUrl.Append($"&scope={Uri.EscapeDataString(string.Join(" ", scope.Select(s => s.ToString().ToLower())))}");
            authorizationUrl.Append($"&redirect_uri={Uri.EscapeDataString(ApplicationCredentials.RedirectUri.ToString())}");
            authorizationUrl.Append($"&prompt={prompt.ToString().ToLower()}");

            if (ApplicationCredentials.UseOwnCsrfProtection)
            {
                state = Helpers.ToBase64UrlEncodedString(Encoding.ASCII.GetBytes(Guid.NewGuid().ToString("X")));
            }

            if (!string.IsNullOrWhiteSpace(state))
            {
                _internalState = state;

                authorizationUrl.Append($"&state={state}");
            }
        }