/// <summary>
        /// 执行中间件
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task Invoke(HttpContext context)
        {
            using (var serviceScope = _ServiceProvider.CreateScope()) //手动高亮
            {
                _DbCotext = serviceScope.ServiceProvider.GetService <Oauth2DbContext>();

                context.Features.Set <IAuthenticationFeature>(new AuthenticationFeature
                {
                    OriginalPath     = context.Request.Path,
                    OriginalPathBase = context.Request.PathBase
                });


                IAuthenticationHandlerProvider handlers = context.RequestServices.GetRequiredService <IAuthenticationHandlerProvider>();
                foreach (AuthenticationScheme scheme in await Schemes.GetRequestHandlerSchemesAsync())
                {
                    var handler = await handlers.GetHandlerAsync(context, scheme.Name) as IAuthenticationRequestHandler;

                    if (handler != null && await handler.HandleRequestAsync())
                    {
                        return;
                    }
                }

                AuthenticationScheme defaultAuthenticate = await Schemes.GetDefaultAuthenticateSchemeAsync();

                if (defaultAuthenticate != null)
                {
                    AuthenticateResult result = await context.AuthenticateAsync(defaultAuthenticate.Name);

                    if (result?.Principal != null)
                    {
                        context.User = result.Principal;
                    }
                }

                if (!context.Request.Path.Equals(_TokenOptions.Path, StringComparison.OrdinalIgnoreCase))
                {
                    await _Next(context);

                    return;
                }

                // Request must be POST with Content-Type: application/x-www-form-urlencoded
                if (!context.Request.Method.Equals("POST", StringComparison.OrdinalIgnoreCase) ||
                    !context.Request.HasFormContentType)
                {
                    await ReturnBadRequest(context);

                    return;
                }

                //返回Token
                await GenerateAuthorizedResult(context);
            }
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ApiScopeController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ApiSecretController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #4
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientPostLogoutRedirectUriController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #5
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 /// <param name="logger"></param>
 public AccountController(Oauth2DbContext dbContext, ILogger <AccountController> logger)
 {
     _DbContext = dbContext;
     _Logger    = logger;
 }
예제 #6
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public IdentityResourceController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #7
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public InitController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #8
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public UserController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientScopeController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public IdentityClaimController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #11
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ApiRsourceController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #12
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public LogController(Oauth2DbContext dbContext, ILogger <LogController> logger)
 {
     _DbContext = dbContext;
     _Logger    = logger;
 }
예제 #13
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientGrantTypeController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientCliamController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientCorsOriginController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientSecretController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #17
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientIdPRestrictionController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
예제 #18
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public DeviceFlowCodesController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="dbContext"></param>
 public ClientPropertyController(Oauth2DbContext dbContext)
 {
     _DbContext = dbContext;
 }