mangopop / jwt-verifier-sym28
用于处理Okta JWT的验证库,为symfony 2.8进行了降级处理
Requires
- php: ^7.2
- bretterer/iso_duration_converter: ^0.1.0
- nesbot/carbon: 1.39.1
- php-http/client-common: ^1.1
- php-http/curl-client: ^1.7
- php-http/discovery: ^1.2
- php-http/httplug: ^1.1
- php-http/message: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- firebase/php-jwt: ^5.2
- guzzlehttp/psr7: dev-master#ad1de77a65b751d598ced37747bf4c17d457fbc9
- php-http/mock-client: ^1.4
- phpunit/phpunit: 7.5.8
- squizlabs/php_codesniffer: ^3.5
- symfony/var-dumper: 4.1.0
This package is auto-updated.
Last update: 2024-09-23 22:49:30 UTC
README
PHP Okta JWT 验证器
在用户成功通过获取授权令牌或使用Okta API后,您将获得一个签名的JWT(id_token和/或access_token)。这些访问令牌的常见用途是在Bearer认证头中使用,以便让您的应用程序知道正在发出请求的用户是谁。为了验证这种使用是否有效,您需要知道如何验证令牌与Okta。本指南提供了一个使用Okta的JWT验证库的PHP验证令牌的示例。
发布状态
此库使用语义化版本控制,并遵循Okta的库版本策略。
最新版本始终可以在发布页面找到。
安装
Okta JWT 验证器可以通过composer安装。
composer require okta/jwt-verifier
此库需要一个JWT库。我们目前支持firebase/php-jwt。您必须安装此库或创建自己的适配器。
composer require firebase/php-jwt
要创建自己的适配器,只需在您的类中实现Okta/JwtVerifier/Adaptors/Adaptor
即可。
您还需要安装一个符合PSR-7规范的库。我们建议在您的项目中使用guzzlehttp/psr7
。
composer require guzzlehttp/psr7
设置库
为了验证JWT,您需要以下几个不同的项目
- 您的发行者URL
- 您想验证的JWT字符串
- 在您的脚本中访问供应商自动加载文件。
require_once("/vendor/autoload.php"); // This should be replaced with your path to your vendor/autoload.php file $jwtVerifier = (new \Okta\JwtVerifier\JwtVerifierBuilder()) ->setDiscovery(new \Okta\JwtVerifier\Discovery\Oauth) // This is not needed if using oauth. The other option is `new \Okta\JwtVerifier\Discovery\OIDC` ->setAdaptor(new \Okta\JwtVerifier\Adaptors\FirebasePhpJwt) ->setAudience('api://default') ->setClientId('{clientId}') ->setIssuer('https://{yourOktaDomain}.com/oauth2/default') ->build();
验证JWT
在您从上述部分获得$jwtVerifier
以及从成功的登录或授权头中的Bearer token
中获取access_token
之后,您需要确保它仍然有效。您只需调用decode
方法(其中$jwtString
是您的字符串格式的访问令牌)。
$jwt = $jwtVerifier->verify($jwtString);
这将验证您的JWT以下内容
- 令牌过期时间
- 它是在何时签发的
- 令牌发行者与上述辅助函数中传入的预期值匹配
- 令牌受众与上述辅助函数中传入的预期值匹配
验证方法的结果是一个Jwt
对象,它有几个辅助方法供您使用
dump($jwt); //Returns instance of \Okta\JwtVerifier\JWT dump($jwt->toJson()); // Returns Claims as JSON Object dump($jwt->getClaims()); // Returns Claims as they come from the JWT Package used dump($jwt->getIssuedAt()); // returns Carbon instance of issued at time dump($jwt->getIssuedAt(false)); // returns timestamp of issued at time dump($jwt->getExpirationTime()); //returns Carbon instance of Expiration Time dump($jwt->getExpirationTime(false)); //returns timestamp of Expiration Time
需要帮助?
如果您在使用SDK时遇到问题,您可以
- 在Okta 开发者论坛上提问
- 在此GitHub上提交问题
- 使用 OAuth 2.0 令牌
结论
以上是本地验证访问令牌的基本步骤。这些步骤与框架没有直接关联,因此您可以将okta/okta-jwt
插入到您选择的框架中。