修复: doorkeeper 无法生成jwt token

This commit is contained in:
yystopf 2022-06-17 18:33:37 +08:00
parent 8f45bcf959
commit 21ccedab9c
4 changed files with 112 additions and 88 deletions

View File

@ -106,6 +106,10 @@ GEM
activerecord (>= 3.1.0, < 7) activerecord (>= 3.1.0, < 7)
diff-lcs (1.3) diff-lcs (1.3)
diffy (3.3.0) diffy (3.3.0)
doorkeeper (5.5.4)
railties (>= 5)
doorkeeper-jwt (0.4.1)
jwt (>= 2.1)
e2mmap (0.1.0) e2mmap (0.1.0)
elasticsearch (7.5.0) elasticsearch (7.5.0)
elasticsearch-api (= 7.5.0) elasticsearch-api (= 7.5.0)
@ -450,6 +454,8 @@ DEPENDENCIES
chromedriver-helper chromedriver-helper
deep_cloneable (~> 3.0.0) deep_cloneable (~> 3.0.0)
diffy diffy
doorkeeper
doorkeeper-jwt
enumerize enumerize
faraday (~> 0.15.4) faraday (~> 0.15.4)
font-awesome-sass (= 4.7.0) font-awesome-sass (= 4.7.0)
@ -458,6 +464,7 @@ DEPENDENCIES
harmonious_dictionary (~> 0.0.1) harmonious_dictionary (~> 0.0.1)
jbuilder (~> 2.5) jbuilder (~> 2.5)
jquery-rails jquery-rails
jwt
kaminari (~> 1.1, >= 1.1.1) kaminari (~> 1.1, >= 1.1.1)
letter_avatar letter_avatar
listen (>= 3.0.5, < 3.2) listen (>= 3.0.5, < 3.2)

View File

@ -7,7 +7,7 @@ Doorkeeper.configure do
# This block will be called to check whether the resource owner is authenticated or not. # This block will be called to check whether the resource owner is authenticated or not.
resource_owner_authenticator do resource_owner_authenticator do
raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}" # raise "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"
# Put your resource owner authentication logic here. # Put your resource owner authentication logic here.
# Example implementation: # Example implementation:
User.find_by(id: session[:www_user_id]) || redirect_to(new_user_session_url) User.find_by(id: session[:www_user_id]) || redirect_to(new_user_session_url)
@ -228,7 +228,7 @@ Doorkeeper.configure do
# `grant_type` - the grant type of the request (see Doorkeeper::OAuth) # `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
# `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes) # `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
# #
# use_refresh_token use_refresh_token
# Provide support for an owner to be assigned to each registered application (disabled by default) # Provide support for an owner to be assigned to each registered application (disabled by default)
# Optional parameter confirmation: true (default: false) if you want to enforce ownership of # Optional parameter confirmation: true (default: false) if you want to enforce ownership of
@ -304,7 +304,7 @@ Doorkeeper.configure do
# #
# You can completely disable this feature with: # You can completely disable this feature with:
# #
# allow_blank_redirect_uri false allow_blank_redirect_uri true
# #
# Or you can define your custom check: # Or you can define your custom check:
# #
@ -444,6 +444,9 @@ Doorkeeper.configure do
# skip_authorization do |resource_owner, client| # skip_authorization do |resource_owner, client|
# client.superapp? or resource_owner.admin? # client.superapp? or resource_owner.admin?
# end # end
skip_authorization do
true
end
# Configure custom constraints for the Token Introspection request. # Configure custom constraints for the Token Introspection request.
# By default this configuration option allows to introspect a token by another # By default this configuration option allows to introspect a token by another
@ -540,7 +543,7 @@ Doorkeeper::JWT.configure do
# Set the encryption secret. This would be shared with any other applications # Set the encryption secret. This would be shared with any other applications
# that should be able to read the payload of the token. Defaults to "secret". # that should be able to read the payload of the token. Defaults to "secret".
secret_key ENV['JWT_SECRET'] secret_key ENV['JWT_SECRET'] || "forgeplus"
# If you want to use RS* encoding specify the path to the RSA key to use for # If you want to use RS* encoding specify the path to the RSA key to use for
# signing. If you specify a `secret_key_path` it will be used instead of # signing. If you specify a `secret_key_path` it will be used instead of

View File

@ -2,125 +2,134 @@ zh-CN:
activerecord: activerecord:
attributes: attributes:
doorkeeper/application: doorkeeper/application:
name: '名称' name: 应用名称
redirect_uri: '登录回调地址' redirect_uri: 重定向 URI
scopes: '权限范围'
errors: errors:
models: models:
doorkeeper/application: doorkeeper/application:
attributes: attributes:
redirect_uri: redirect_uri:
fragment_present: '不能包含片段(#' fragment_present: 不能包含网址片段(#
invalid_uri: '必须是有效的 URL 格式' invalid_uri: 必须是有效的 URI 格式
relative_uri: '必须是绝对的 URL 地址' unspecified_scheme: must specify a scheme.
secured_uri: '必须是 HTTPS/SSL 的 URL 地址' relative_uri: 必须是绝对的 URI 地址
secured_uri: 必须是 HTTPS/SSL 的 URI 地址
forbidden_uri: 被服务器禁止。
scopes:
not_match_configured: 不匹配服务器上的配置。
doorkeeper: doorkeeper:
applications: applications:
confirmations: confirmations:
destroy: '确定要删除应用吗?' destroy: 确定要删除应用吗?
buttons: buttons:
edit: '编辑' edit: 编辑
destroy: '删除' destroy: 删除
submit: '提交' submit: 提交
cancel: '取消' cancel: 取消
authorize: '授权' authorize: 授权
form: form:
error: '抱歉! 提交信息的时候遇到了下面的错误' error: 抱歉! 提交信息的时候遇到了下面的错误
help: help:
redirect_uri: '每行只能有一个 URL' confidential: 应用程序的client secret可以保密但原生移动应用和单页应用将无法保护client secret。
native_redirect_uri: '使用 %{native_redirect_uri} 作为本地测试' redirect_uri: 每行只能有一个 URI
scopes: '用空格隔开权限范围,留空则使用默认设置' blank_redirect_uri: Leave it blank if you configured your provider to use Client Credentials, Resource Owner Password Credentials or any other grant type that doesn't require redirect URI.
scopes: 用空格分割权限范围,留空则使用默认设置
edit: edit:
title: '修改应用' title: 修改应用
index: index:
title: '你的应用' title: 你的应用
new: '创建新应用' new: 创建新应用
name: '名称' name: 名称
callback_url: '登录回调地址' callback_url: 回调 URL
confidential: Confidential?
actions: 动作
confidentiality:
'yes':
'no': 沒有
new: new:
title: '创建新应用' title: 创建新应用
show: show:
title: '应用:%{name}' title: 应用:%{name}
application_id: '应用 ID' application_id: 应用 UID
secret: '私钥' secret: 应用密钥
scopes: '权限范围' secret_hashed: Secret hashed
callback_urls: '登录回调地址' scopes: 权限范围
confidential: 'Confidential' confidential: Confidential
actions: '操作' callback_urls: 回调 URL
actions: 操作
not_defined: Not defined
authorizations: authorizations:
buttons: buttons:
authorize: '授权' authorize: 同意授权
deny: '拒绝' deny: 拒绝授权
error: error:
title: '存在错误' title: 发生错误
new: new:
title: '需要你授权' title: 需要授权
prompt: '授权 %{client_name} 使用你的帐号?' prompt: 授权 %{client_name} 使用你的帐户?
able_to: '此应用将会' able_to: 此应用将能够
show: show:
title: '授权码' title: 授权代码
form_post:
title: Submit this form
authorized_applications: authorized_applications:
confirmations: confirmations:
revoke: '确定要注销此应用的认证信息吗?' revoke: 确定要撤销对此应用的授权吗?
buttons: buttons:
revoke: '注销' revoke: 撤销授权
index: index:
title: '你授权的应用列表' title: 已授权的应用
application: '应用' application: 应用
created_at: '授权时间' created_at: 授权时间
date_format: '%Y-%m-%d %H:%M:%S' date_format: "%Y-%m-%d %H:%M:%S"
pre_authorization:
status: 预授权
errors: errors:
messages: messages:
# Common error messages invalid_request:
invalid_request: '这个请求缺少必要的参数,或者参数值、格式不正确' unknown: 请求缺少必要的参数,或者参数值、格式不正确。
invalid_redirect_uri: '无效的登录回调地址' missing_param: 'Missing required parameter: %{value}.'
unauthorized_client: '未授权的应用,请求无法执行' request_not_authorized: Request need to be authorized. Required parameter for authorizing request is missing or invalid.
access_denied: '用户或服务器拒绝了请求' invalid_redirect_uri: 无效的登录回调地址。
invalid_scope: '请求范围无效、未知或格式不正确' unauthorized_client: 未授权的应用,请求无法执行。
server_error: '服务器异常,无法处理请求' access_denied: 资源所有者或服务器拒绝了请求。
temporarily_unavailable: '服务器维护中或负载过高,暂时无法处理请求' invalid_scope: 请求的权限范围无效、未知或格式不正确。
invalid_code_challenge_method: The code challenge method must be plain or S256.
#configuration error messages server_error: 服务器异常,无法处理请求。
credential_flow_not_configured: 'Resource Owner Password Credentials flow failed原因是 Doorkeeper.configure.resource_owner_from_credentials 尚未设置。' temporarily_unavailable: 服务器维护中或负载过高,暂时无法处理请求。
resource_owner_authenticator_not_configured: 'Resource Owner find failed原因是 Doorkeeper.configure.resource_owner_authenticator 尚未设置。' credential_flow_not_configured: 由于 Doorkeeper.configure.resource_owner_from_credentials 尚未配置,应用验证授权流程失败。
resource_owner_authenticator_not_configured: 由于 Doorkeeper.configure.resource_owner_authenticator 尚未配置,查找资源所有者失败。
# Access grant errors admin_authenticator_not_configured: 由于 Doorkeeper.configure.admin_authenticator 尚未配置,禁止访问管理员面板。
unsupported_response_type: '服务器不支持这种响应类型' unsupported_response_type: 服务器不支持这种响应类型。
unsupported_response_mode: The authorization server does not support this response mode.
# Access token errors invalid_client: 由于应用信息未知、未提交认证信息或使用了不支持的认证方式,认证失败。
invalid_client: '由于未知、不支持或没有客户端,认证失败' invalid_grant: 授权方式无效、过期或已被撤销、与授权请求中的回调地址不一致,或使用了其他应用的回调地址。
invalid_grant: '授权方式无效,或者登录回调地址无效、过期或已被撤销' unsupported_grant_type: 服务器不支持此类型的授权方式。
unsupported_grant_type: '服务器不支持此类型的授权方式'
# Password Access token errors
invalid_resource_owner: '资源所有者认证无效或没有所有者'
invalid_token: invalid_token:
revoked: "访问令牌已被吊销" revoked: 访问令牌已被吊销
expired: "访问令牌已过期" expired: 访问令牌已过期
unknown: "访问令牌无效" unknown: 访问令牌无效
revoke:
unauthorized: You are not authorized to revoke this token
forbidden_token:
missing_scope: Access to this resource requires scope "%{oauth_scopes}".
flash: flash:
applications: applications:
create: create:
notice: '应用创建成功' notice: 应用创建成功。
destroy: destroy:
notice: '应用删除成功' notice: 应用删除成功。
update: update:
notice: '应用修改成功' notice: 应用修改成功。
authorized_applications: authorized_applications:
destroy: destroy:
notice: '已成功注销了应用的认证信息' notice: 已成功撤销对此应用的授权。
layouts: layouts:
admin: admin:
title: Doorkeeper
nav: nav:
oauth2_provider: 'OAuth2 提供商' oauth2_provider: OAuth2 提供商
applications: '应用' applications: 应用
home: '首页' home: 首页
application: application:
title: 'OAuth 认证' title: 需要 OAuth 认证

View File

@ -0,0 +1,5 @@
class ChangeOauthAccessTokensTokenColumnLength < ActiveRecord::Migration[5.2]
def change
change_column :oauth_access_tokens, :token, :string, limit: 500
end
end