新在Symfoob娱乐下载ny 6.2:访问令牌认证者
2022年11月3日·发表的哈维尔Eguiluz
ob娱乐下载Symfony 6.2是支持通过Les-Tilleuls.coop。Les-Tilleuls.coop是a team of 70+ Symfony experts who can help you design, develop and fix your projects. We provide a wide range of professional services including development, consulting, coaching, training and audits. We also are highly skilled in JS, Go and DevOps. We are a worker cooperative!
提供的
弗洛伦特·Morselli
在# 46428。
访问令牌,又叫无记名标记中定义RFC6750和很受欢迎在处理api。任何一方拥有一个访问令牌可以使用它来获得相关的资源。这就是为什么这些令牌需要保护从披露在存储和运输。
在Syob娱乐下载mfony 6.2我们添加一个新的身份能够获取访问令牌和检索相关的用户标识符。新的认证者可以从请求中提取标记头(RFC6750 2.1节),请求主体(RFC6750 2.2节)和查询字符串(RFC6750 2.3节)。
要使用这个身份,在应用程序中定义一个防火墙和添加access_token
选项:
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:#……防火墙:主要:模式:^ /access_token:token_handler:App \安全\ AccessTokenHandler
的token_handler
选项是唯一的强制选项,定义了服务,处理令牌(如验证它)来检索相关的用户。该服务必须实现AccessTokenHandlerInterface
。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src /安全/ AccessTokenHandler.php名称空间应用程序\安全;使用应用程序\存储库\SomeTokenRepository;使用ob娱乐下载\组件\安全\核心\异常\BadCredentialsException;使用ob娱乐下载\组件\安全\Http\AccessToken\AccessTokenHandlerInterface;类AccessTokenHandler实现了AccessTokenHandlerInterface{公共函数__construct(私人只读的SomeTokenRepository美元存储库,){}公共函数getUserIdentifierFrom(字符串美元令牌):字符串{美元accessToken=美元这- >存储库- >findOneByValue (美元令牌);如果(零= = =美元accessToken| | !美元accessToken- >isValid ()) {扔新BadCredentialsException (无效的凭证。);}返回美元accessToken- >getUserId ();}}
在你标记处理程序必须验证给定的牌。例如,如果您使用不透明的令牌,如随机字符串存储在数据库中,检查是否存在于数据库;如果你使用独立的令牌,如JWT, SAML2等验证那些根据他们的规格。
新身份定义了许多配置选项解释在Symfony的文档,比如限制寻找令牌的请求,定制响应成功和失败认证,等等。欧宝官网下载appob娱乐下载
发表在#生活在边缘
评论
快速的信息:“查询字符串的链接和“请求主体”需要交换;-)
谢谢你Felix,雅各布和Jannik的评论!我解决所有的问题。欢呼。
你好!我认为我们应该更新这个博客的最新变化对AccessTokenHandlerInterface:
' ' '
——公共职能getUserIdentifierFrom accessToken美元(string):字符串
+公共职能getUserBadgeFrom accessToken美元(string): UserBadge
' ' '
(来自https://github.com/symob娱乐下载fony/symfony/pull/48285)
' ' '
——公共职能getUserIdentifierFrom accessToken美元(string):字符串
+公共职能getUserBadgeFrom accessToken美元(string): UserBadge
' ' '
(来自https://github.com/symob娱乐下载fony/symfony/pull/48285)
SOEDJEDE Felix is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now在代码中有一个小错误。
我们有使用App \ Repository \ AccessTokenRepository;但在构造函数中有“SomeTokenRepository”