如果您想将 OpenConnect 添加到受支持的 OAuth2 内置 Apigility 以便获得JWT作为答案,您应该这样做:
首先,将这些行添加到 /config/autoload/global.php
'zf-oauth2' => [
'allow_implicit' => true,
'access_lifetime' => 28800,
'enforce_state' => true,
'options' => [
'use_jwt_access_tokens' => true,
'store_encrypted_token_string' => true,
'use_openid_connect' => true,
'issuer' => 'issueroftoken.com',
'id_lifetime' => 28800,
'www_realm' => 'Service',
'token_param_name' => 'access_token',
'token_bearer_header_name' => 'Bearer',
'require_exact_redirect_uri' => true,
'allow_credentials_in_request_body' => true,
'allow_public_clients' => true,
'always_issue_new_refresh_token' => true,
'unset_refresh_token_after_use' => true,
],
],
重要的行必须设置为 true 并且use_jwt_access_tokens
必须填写(我添加了我的网站地址)。如果您不想更改它们的默认值,可以删除其余部分。use_openid_connect
issuer
然后您需要创建此表(在此处找到此信息):
CREATE TABLE oauth_public_keys (
client_id VARCHAR(80),
public_key VARCHAR(2000),
private_key VARCHAR(2000),
encryption_algorithm VARCHAR(100) DEFAULT 'RS256'
)
该表将用于存储每个客户端的一个密钥,您应该通过运行命令生成该密钥(在此处找到这个):
# private key
$ openssl genrsa -out privkey.pem 2048
# public key
$ openssl rsa -in privkey.pem -pubout -out pubkey.pem
然后,您应该获取这些文件的内容,public_key
并private_key
与client_id
.
我的访问令牌正在生成,oauth_access_tokens
因为我使用的是隐式类型授权(不client_secret
启用oauth_clients
和allow_implicit
global.php 上的标志),所以我需要增加access_token
字段,您可能需要检查您的字段有多少字符使用有:
ALTER TABLE `oauth_access_tokens` CHANGE `access_token` `access_token` VARCHAR(2000) NOT NULL;
应该是这样!您现在应该从 Apigility 获得 JWT 作为答案!
希望这可以帮助。