ac / login-convenience-bundle
为提供JSON Web API的Symfony服务器进行认证
Requires
- php: >=5.4
- fp/openid-bundle: dev-master
- lightopenid/lightopenid: dev-master
- symfony/symfony: >=2.4
README
简化了提供JSON Web API的Symfony服务器的认证过程。
在Fp/OpenIdBundle的基础上提供以下功能
- OpenID登录
- 抽象用户类,实现了大多数令人烦恼的通用功能
- 安全控制器动作,用于注销
- 基于授权头的会话,而不是cookie
- 对登录/注销请求返回JSON响应
- 无刷新OpenID登录机制的客户端,来自http://openid-demo.appspot.com/
- 开发环境和预发布环境使用的模拟登录模式
安装
- 使用composer安装
ac/login-convenience-bundle
- 如果使用SQL:添加并运行迁移以创建用户和OpenIdIdentity表
- 将ACLoginConvenienceBundle和FpOpenIdBundle添加到AppKernel
- 删除security.yml中的所有内容,除了这一部分
ac_login_convenience:
secured_paths:
- /important-stuff
- 将以下内容添加到您的routing.yml中
ac_login_convenience:
resource: "."
type: "ac_login_convenience_routes"
- 可选,如果您想使用Authentication头部来接收会话密钥而不是cookie,请在config.yml中设置此选项
framework:
session:
storage_id: ac_login_convenience.session.storage.auth_header
使用方法
使用create-user
命令将用户添加到系统中。您可以在添加用户时指定OpenID身份路径,这样他们就可以通过该身份登录。
添加OpenID身份
如果您不想提前指定身份,请为任何您信任的OpenID提供者添加条目到ac_login_convenience.trusted_providers
配置选项,这些提供者可以认证之前未知的用户
ac_login_convenience:
trusted_providers:
- https://somebody.trustworthy.com/openid
任何通过受信任提供者登录的用户都可以通过电子邮件地址与您已创建的现有用户匹配。这要求提供者通过"contact/email" AX字段提供用户的电子邮件,但这很常见。
或者,您可以创建自己的OpenID注册系统。在以某种安全方式验证身份URL确实属于用户之后,您可以调用ac_login_convenience.openid_user_manager
上的associateIdentityWithUser
方法,允许用户使用该身份登录。
其他选项
这些可以在ac_login_convenience配置部分指定
-
dummy_mode
:如果为true,则在登录时实际上不执行OpenID检查,用户可以简单地从数据库中的所有用户列表中选择。这对于开发环境很有用,但显然不应在生产系统中使用。 -
db_driver
:默认为orm
,表示通过Doctrine ORM访问用户和身份。也可以指定mongodb
。 -
user_model_class
:您必须使用自己的用户类;在此处指定类的完全限定名称。根据您使用的db_driver
设置,您应该从Entity\AbstractEntityUser
或Document\AbstractDocumentUser
派生。 -
api_keys
:从用户电子邮件地址到API键的可选哈希映射。如果提供,则客户端可以使用"Authorization: Key foobar"头部直接以给定用户“foobar”的身份访问您的应用程序,而无需执行完整的OpenID认证和会话创建过程。