/// <summary> /// Check if the specified client ID is valid. /// </summary> /// <param name="context">The authorization endpoint specific context.</param> /// <returns>A <see cref="Task{Application}"/> whose result represents the specified client ID specific application. </returns> /// <exception cref="ArgumentNullException">Specified <paramref name="context"/> is null.</exception> protected virtual async Task <Application> ValidateClientIdAsync(OAuthContext context) { Guard.ArgumentNotNull(context, nameof(context)); var clientId = ((context as AuthorizationContext)?.ClientId) ?? (context as TokenContext)?.ClientId; if (string.IsNullOrEmpty(clientId)) { return(null); } var application = await ApplicationStore.GetByClientIdAsync(clientId); if (null == application) { context.Failed(OAuthErrors.UnauthorizedClient.UnregisteredApplication, clientId); } return(application); }