Ejemplo n.º 1
0
        /// <summary>
        /// 请求开始时的处理
        /// </summary>
        /// <returns></returns>
        public override async Task <bool> HandleRequestAsync()
        {
            var matchRequestContext = new OAuthMatchEndpointContext(Context, Options);

            if (Options.AuthorizeEndpointPath.HasValue && Options.AuthorizeEndpointPath == Request.Path)
            {
                matchRequestContext.MatchesAuthorizeEndpoint();
            }
            else if (Options.TokenEndpointPath.HasValue && Options.TokenEndpointPath == Request.Path)
            {
                matchRequestContext.MatchesTokenEndpoint();
            }
            await Options.Provider.MatchEndpoint(matchRequestContext);

            if (matchRequestContext.IsRequestCompleted)
            {
                return(true);
            }

            if (matchRequestContext.IsAuthorizeEndpoint || matchRequestContext.IsTokenEndpoint)
            {
                if (!Options.AllowInsecureHttp && !Request.IsHttps)
                {
                    Logger.LogWarning("Authorization server ignoring http request because AllowInsecureHttp is false.");
                    return(false);
                }
                if (matchRequestContext.IsAuthorizeEndpoint)
                {
                    return(await InvokeAuthorizeEndpointAsync());
                }
                if (matchRequestContext.IsTokenEndpoint)
                {
                    await InvokeTokenEndpointAsync();

                    return(true);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Called to determine if an incoming request is treated as an Authorize or Token
 /// endpoint. If Options.AuthorizeEndpointPath or Options.TokenEndpointPath
 /// are assigned values, then handling this event is optional and context.IsAuthorizeEndpoint and context.IsTokenEndpoint
 /// will already be true if the request path matches.
 /// </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 MatchEndpoint(OAuthMatchEndpointContext context)
 {
     return(OnMatchEndpoint.Invoke(context));
 }