cultuurnet / silex-uitid-provider
Silex UiTID认证提供者。
Requires
- php: >=5.5.0
- cultuurnet/auth: ~1.2
- cultuurnet/culturefeed-php: ~1.6
- silex/silex: ~1.3
- symfony/security: ~2.6
Requires (Dev)
- phing/phing: ~2.10
- phpunit/phpunit: ~4.3
- satooshi/php-coveralls: ~0.7
- squizlabs/php_codesniffer: ~2.2
This package is auto-updated.
Last update: 2024-09-16 17:54:48 UTC
README
包含各种控制器和服务提供者,以集成Silex项目中的UiTID认证。
0. 依赖关系
您需要Silex提供的Session
和UrlGenerator
服务。
$app->register(new \Silex\Provider\SessionServiceProvider());
$app->register(new \Silex\Provider\UrlGeneratorServiceProvider());
您还需要注册ServiceControllerServiceProvider
。
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
此服务使您能够将控制器作为服务加载,因此您可以在ControllerProvider类之外使用单独的控制器类。
最后,您还需要注册带有一些额外配置的CultureFeedServiceProvider
。
$app->register(new \CultuurNet\UiTIDProvider\CultureFeed\CultureFeedServiceProvider(), array(
'culturefeed.endpoint' => 'http://example.com/,
'culturefeed.consumer.key' => 'example-consumer-key',
'culturefeed.consumer.secret' => 'example-consumer-secret',
));
1. UiTID认证
您需要像这样注册AuthServiceProvider
和UserServiceProvider
:
$app->register(new CultuurNet\UiTIDProvider\Auth\AuthServiceProvider());
$app->register(new CultuurNet\UiTIDProvider\User\UserServiceProvider());
然后,您需要将AuthControllerProvider
挂载到您喜欢的路径。
$app->mount(
'culturefeed/oauth',
new \CultuurNet\UiTIDProvider\Auth\AuthControllerProvider()
);
此时,如果将访客重定向到http://your-website.com/culturefeed/oauth/connect?destination=http://your-website.com(其中your-website.com显然应该是您自己的域名),您的访客就可以进行认证。
认证后,他们将被重定向回destination参数中设置的URL。在这种情况下,是http://your-website.com
。
2. 用户信息
您可以使用您在步骤1中注册的UserServiceProvider
提供的以下服务来访问当前用户或其他用户的信息
$app['uitid_user_session_service']
:CultuurNet\UiTIDProvider\User\UserSessionService
的一个实例,可以返回当前登录用户的最低限度的用户信息。$app['uitid_user_session_data']
:CultuurNet\Auth\User
的一个实例,包含用户ID和访问令牌。(也称为“最低限度的用户信息”。)$app['uitid_user_service']
:CultuurNet\UiTIDProvider\User\UserService
的一个实例,可以通过ID或用户名返回用户数据。$app['uitid_user']
:CultuurNet\UiTIDProvider\User\User
的一个实例,包含当前登录用户的全部额外信息。
可选地,您可以将UserControllerProvider
挂载到您喜欢的路径。
$app->mount('uitid', new \CultuurNet\UiTIDProvider\User\UserControllerProvider());
这将提供以下路径(在这个例子中,以uitid
为前缀):
uitid/user
:以JSON格式返回当前用户的数据。uitid/logout
:使当前会话无效并注销用户。
3. 限制非认证用户对路径的访问。
您可以通过注册SecurityServiceProvider
和UiTIDSecurityServiceProvider
轻松地限制非认证用户对路径的访问。
$app->register(new \Silex\Provider\SecurityServiceProvider());
$app->register(new \CultuurNet\UiTIDProvider\Security\UiTIDSecurityServiceProvider());
之后,您需要配置防火墙设置。请确保允许访问步骤1中挂载的路径,使用uitid
验证器,并使用$app['uitid_firewall_user_provider']
作为用户提供者。
以下是一个有效的防火墙配置示例
$app['security.firewalls'] = array(
'unsecured' => array(
'pattern' => '^/culturefeed/oauth',
),
'secured' => array(
'pattern' => '^.*$',
'uitid' => true,
'users' => $app['uitid_firewall_user_provider'],
),
);
此示例将只允许在用户登录之前访问以/culturefeed/oauth
开头的路径。所有其他路径将返回状态码为403的响应。
有关防火墙配置的更多信息,请参阅Silex文档。