[ 'displayErrorDetails' => true, ], Server::class => function () { // Init our repositories $clientRepository = new ClientRepository(); $accessTokenRepository = new AccessTokenRepository(); $scopeRepository = new ScopeRepository(); $userRepository = new UserRepository(); $refreshTokenRepository = new RefreshTokenRepository(); $privateKeyPath = 'file://' . __DIR__ . '/../private.key'; $publicKeyPath = 'file://' . __DIR__ . '/../public.key'; // Setup the authorization server $server = new Server( $clientRepository, $accessTokenRepository, $scopeRepository, $privateKeyPath, $publicKeyPath ); // Enable the grants $server->enableGrantType( new PasswordGrant($userRepository, $refreshTokenRepository), new \DateInterval('PT1H') ); $server->enableGrantType( new RefreshTokenGrant($refreshTokenRepository), new \DateInterval('PT1H') ); return $server; } ]); $app->post('/access_token', function () { })->add(new AuthenticationServerMiddleware($app->getContainer()->get(Server::class))); $app->run();