cultuurnet/silex-uitid-provider

Silex UiTID认证提供者。

dev-master / 0.x-dev 2020-10-08 13:29 UTC

README

Build Status Coverage Status

包含各种控制器和服务提供者,以集成Silex项目中的UiTID认证。

0. 依赖关系

您需要Silex提供的SessionUrlGenerator服务。

$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认证

您需要像这样注册AuthServiceProviderUserServiceProvider

$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. 限制非认证用户对路径的访问。

您可以通过注册SecurityServiceProviderUiTIDSecurityServiceProvider轻松地限制非认证用户对路径的访问。

$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文档