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