/// <summary>
 /// Called to validate that the context.ClientId is a registered "client_id", and that the context.RedirectUri a "redirect_uri" 
 /// registered for that client. This only occurs when processing the authorization endpoint. The application MUST implement this
 /// call, and it MUST validate both of those factors before calling context.Validated. If the context.Validated method is called
 /// with a given redirectUri parameter, then IsValidated will only become true if the incoming redirect URI matches the given redirect URI. 
 /// If context.Validated is not called the request will not proceed further. 
 /// </summary>
 /// <param name="context">The context of the event carries information in and results out.</param>
 /// <returns>Task to enable asynchronous execution</returns>
 public virtual Task ValidateClientRedirectUri(OpenIdConnectValidateClientRedirectUriContext context)
 {
     return OnValidateClientRedirectUri.Invoke(context);
 }
        // check redirected url match with server or not
        private Task ValidateClientRedirectUri(OpenIdConnectValidateClientRedirectUriContext context)
        {
            if (context.ClientId == Clients.Client1.Id)
            {
                context.Validated(Clients.Client1.RedirectUrl);
            }
            else if (context.ClientId == Clients.Client2.Id)
            {
                context.Validated(Clients.Client2.RedirectUrl);
            }
            else if (context.ClientId == Clients.Client3.Id)
            {
                var result = context.Validated(Clients.Client3.RedirectUrl);

            }
            return Task.FromResult(0);
        }