public void TestWithNewCodeVerifier()
        {
            var instance = new AuthorizationCodeGrantArgs();

            instance.WithNewCodeVerifier();
            Assert.That(instance.CodeVerifier, Is.Not.Null.And.Not.Empty);
        }
        public void TestComputeCodeChallenge()
        {
            var instance = new AuthorizationCodeGrantArgs();

            instance.CodeVerifier = "99DccPNbKI1E4NlAsbBcO06W_Yn~UlONrF4iYoyWMRq0D~RRjLGZO9-P2mTeL4Ih";
            var result = instance.ComputeCodeChallenge();

            Assert.That(result, Is.EqualTo("QUYHD2BztPSx9-Iw9QJQUF4JF6ypgDywhHWOqpPJ8x8"));
        }
コード例 #3
0
        /// <summary>
        /// Starts the authorization process and waits for the process to complete before returning.
        /// When authorization has been completed, the <see cref="Authorization"/> property is populated
        /// and the access token in <see cref="AuthorizationInfo.AccessTokenResponse"/> is used for the
        /// subsequent API requests.
        /// </summary>
        public virtual void AuthorizeSync()
        {
            var authorization = InitializeAuthorizationCodeGrant();
            var args          = new AuthorizationCodeGrantArgs();

            if (OAuthConfig.UsePkce)
            {
                args = args.WithNewCodeVerifier();
            }
            authorization.AuthorizeSync(args);
            Authorization = authorization;
        }
コード例 #4
0
        /// <summary>
        /// Builds the full Uri for starting the OpenID Connect authentication / authorization process against the server
        /// using browser-based Authorization Code Grant flow (optionally with PKCE).
        /// </summary>
        /// <param name="config">OAuth / OpenID Connect configuration of the client</param>
        /// <param name="responseType">OIDC response type</param>
        /// <param name="args"><see cref="AuthorizationCodeGrantArgs"/> specifying arguments for the process to start</param>
        /// <param name="query">Query parameters to populate</param>
        /// <returns><see cref="Uri"/> to use for starting the process</returns>
        private static void BuildAuthorizationUriQuery(
            IBrowserBasedAuthorizationConfig config,
            string responseType,
            AuthorizationCodeGrantArgs args,
            NameValueCollection query)
        {
            BuildAuthorizationUriQuery(config, responseType, args as BrowserBasedAuthorizationArgs, query);

            if (args != null && args.CodeVerifier != null)
            {
                query["code_challenge_method"] = "S256";
                query["code_challenge"]        = args.ComputeCodeChallenge();
            }
        }
コード例 #5
0
 /// <summary>
 /// Builds the full Uri for starting the OpenID Connect authentication / authorization process against the server
 /// using browser-based Authorization Code Grant flow (optionally with PKCE).
 /// </summary>
 /// <param name="config">OAuth / OpenID Connect configuration of the client</param>
 /// <param name="responseType">OIDC response type</param>
 /// <param name="args"><see cref="AuthorizationCodeGrantArgs"/> specifying arguments for the process to start</param>
 /// <returns><see cref="Uri"/> to use for starting the process</returns>
 public static Uri BuildAuthorizationUri(IBrowserBasedAuthorizationConfig config, string responseType, AuthorizationCodeGrantArgs args)
 {
     return(BuildAuthorizationUriInternal(config, responseType, args, BuildAuthorizationUriQuery));
 }