nl.idaas/openid-server

PHP OpenID Connect 服务器


README

Latest Stable Version Total Downloads

PHP OpenID Connect 服务器

这是一个基于 PHP 编写的 OpenID Connect 服务器,构建在 thephpleague/oauth2-server 之上。

它被 idaas.nl 使用:(尚未)另一个身份即服务平台。

该库支持由 thephpleague/oauth2-server 支持的所有内容,以及以下规范

该库由 Arie Timmerman 创建。

安装

composer require nl.idaas/openid-server

示例

此示例演示如何实现一个支持授权授予(包括 OpenID Connect 支持)的授权服务器。

// Init our repositories
$scopeRepository = new ScopeRepository(); // instance of ScopeRepositoryInterface
$authCodeRepository = new AuthCodeRepository(); // instance of AuthCodeRepositoryInterface
$refreshTokenRepository = new RefreshTokenRepository(); // instance of RefreshTokenRepositoryInterface

// Specific to this module
$clientRepository = new ClientRepository(); // instance of \Idaas\OpenID\Repositories\ClientRepositoryInterface
$accessTokenRepository = new AccessTokenRepository(); // instance of \Idaas\OpenID\Repositories\AccessTokenRepositoryInterface
$claimRepository = new ClaimRepository(); // instance of ClaimRepositoryInterface

$privateKey = 'file://path/to/private.key';
//$privateKey = new CryptKey('file://path/to/private.key', 'passphrase'); // if private key has a pass phrase
$encryptionKey = 'lxZFUEsBCJ2Yb14IF2ygAHI5N4+ZAUXXaSeeJm6+twsUmIen'; // generate using base64_encode(random_bytes(32))

// Setup the authorization server
$server = new \League\OAuth2\Server\AuthorizationServer(
    $clientRepository,
    $accessTokenRepository,
    $scopeRepository,
    $privateKey,
    $encryptionKey
);

// OpenID Connect Authorization Code Grant
$grant = new \Idaas\OpenID\Grant\AuthCodeGrant(
    $authCodeRepository,
    $refreshTokenRepository,
    $claimRepository,
    new \Idaas\OpenID\Session,
    new DateInterval('PT10M'), // authorization codes will expire after 10 minutes
    new DateInterval('PT10M') // ID Token will expire after 10 minutes
);

$grant->setRefreshTokenTTL(new \DateInterval('P1M')); // refresh tokens will expire after 1 month

// Enable the authentication code grant on the server
$server->enableGrantType(
    $grant,
    new \DateInterval('PT1H') // access tokens will expire after 1 hour
);

用法