如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Tyk Identity Broker (TIB) 是一个服务级组件,提供委托身份授权功能,支持对Tyk相关组件(如Tyk仪表板、Tyk开发者门户和Tyk网关API流程)的认证访问。它通过身份提供者验证用户身份,并通过身份处理器为Tyk组件授予访问权限,实现单点登录(SSO)和多认证服务集成。
!TIB架构图
TIB运行需满足以下依赖:
TIB Docker镜像可从Docker Hub获取:tykio/tyk-identity-broker
基本运行命令
bashdocker run -p 3010:3010 \ -v $(pwd)/tib.conf:/opt/tyk-identity-broker/tib.conf \ -v $(pwd)/profiles.json:/opt/tyk-identity-broker/profiles.json \ tykio/tyk-identity-broker
注意:运行前需根据配置说明编辑
tib.conf和profiles.json文件
TIB可通过命令行参数指定配置文件路径:
bash# 指定配置文件和配置文件路径 ./tyk-auth-proxy -c /path/to/tib.conf -p /path/to/profiles.json
通过环境变量TYK_LOGLEVEL设置日志级别,可选值:
debug:调试级别info:信息级别(默认)warn:警告级别error:错误级别示例:
bashexport TYK_LOGLEVEL=debug docker run ... tykio/tyk-identity-broker
TIB通过以下流程实现身份认证与授权:
TIB内置以下身份提供者:
身份处理器在验证身份后执行预定义操作,支持以下类型:
用户相关操作:
GenerateOrLoginDeveloperProfile:创建/登录开发者门户用户GenerateOrLoginUserProfile:登录仪表板(创建临时会话)GenerateOAuthTokenForClient:生成Tyk OAuth令牌(标准OAuth流程)令牌生成操作:
GenerateTemporaryAuthToken:生成Tyk标准访问令牌(支持重定向或JSON响应)TIB通过两个配置文件进行设置:
tib.conf:主配置文件(服务设置、后端存储、Tyk API连接等)profiles.json:配置文件(定义身份提供者、处理器及操作规则)主配置文件示例:
json{ "Secret": "test-secret", "HttpServerOptions": { "UseSSL": true, "CertFile": "./certs/server.pem", "KeyFile": "./certs/server.key" }, "SSLInsecureSkipVerify": true, "BackEnd": { "Name": "in_memory", "IdentityBackendSettings": { "Hosts": { "localhost": "6379" }, "Password": "", "Database": 0, "EnableCluster": false, "MaxIdle": 1000, "MaxActive": 2000 } }, "TykAPISettings": { "GatewayConfig": { "Endpoint": "http://{GATEWAY-DOMAIN}", "Port": "80", "AdminSecret": "{GATEWAY-SECRET}" }, "DashboardConfig": { "Endpoint": "http://{DASHBOARD-DOMAIN}", "Port": "3000", "AdminSecret": "{ADMIN-DASHBOARD-SECRET}" } } }
关键配置项说明
| 配置项 | 说明 |
|---|---|
Secret | TIB API密钥,用于远程配置 |
HttpServerOptions.UseSSL | 是否启用SSL(推荐生产环境启用) |
HttpServerOptions.CertFile/KeyFile | SSL证书和密钥文件路径 |
SSLInsecureSkipVerify | 是否跳过SSL证书验证(测试环境使用) |
BackEnd | 后端存储配置(in_memory或redis) |
BackEnd.Hosts | Redis主机(格式:"hostname:port") |
BackEnd.EnableCluster | 是否启用Redis集群 |
TykAPISettings.GatewayConfig | Tyk网关连接配置(端点、端口、管理员密钥) |
TykAPISettings.DashboardConfig | Tyk仪表板连接配置 |
配置文件定义身份验证规则,示例:
json[{ "ActionType": "GenerateOrLoginDeveloperProfile", "ID": "1", "OrgID": "53ac07777cbb8c2d53000002", "ProviderConfig": { "CallbackBaseURL": "http://tib.domain.com:3010", "FailureRedirect": "http://portal.domain.com/login", "UseProviders": [{ "Key": "GOOGLE-CLIENT-ID", "Name": "gplus", "Secret": "GOOGLE-CLIENT-SECRET" }] }, "ProviderConstraints": { "Domain": "tyk.io" }, "ProviderName": "SocialProvider", "ReturnURL": "http://portal.domain.com/portal/sso", "Type": "redirect" }]
配置文件关键字段
| 字段 | 说明 |
|---|---|
ActionType | 身份处理器操作类型(如GenerateOrLoginDeveloperProfile) |
ID | 唯一配置文件ID |
OrgID | Tyk组织ID |
ProviderName | 身份提供者名称(SocialProvider/LDAPProvider等) |
ProviderConfig | 身份提供者配置(回调URL、密钥等) |
ReturnURL | 验证成功后的重定向URL |
Type | 响应类型(redirect或passthrough) |
Social提供者支持OAuth/OpenID Connect的身份验证,以下是常见场景配置示例。
Google登录(开发者门户SSO)
步骤1:配置Google OAuth客户端
http://{TIB_HOST}:{TIB_PORT}/auth/{PROFILE_ID}/gplus/callback步骤2:配置profiles.json
json[{ "ActionType": "GenerateOrLoginDeveloperProfile", "ID": "1", "OrgID": "YOUR-ORG-ID", "IdentityHandlerConfig": { "DashboardCredential": "DASHBOARD-USER-API-TOKEN" }, "ProviderConfig": { "CallbackBaseURL": "http://tib.domain.com:3010", "FailureRedirect": "http://portal.domain.com/login", "UseProviders": [{ "Name": "gplus", "Key": "GOOGLE-CLIENT-ID", "Secret": "GOOGLE-CLIENT_SECRET", "SkipUserInfoRequest": false }] }, "ProviderConstraints": { "Domain": "yourdomain.com" // 限制域名 }, "ProviderName": "SocialProvider", "ReturnURL": "http://portal.domain.com/portal/sso", "Type": "redirect" }]
步骤3:访问TIB端点
在浏览器访问:http://tib.domain.com:3010/auth/1/gplus,完成登录后重定向至开发者门户。
OpenID Connect配置(Okta示例)
json{ "ProviderConfig": { "CallbackBaseURL": "http://tib.domain.com:3010", "FailureRedirect": "http://portal.domain.com/login", "UseProviders": [{ "Name": "openid-connect", "Key": "OKTA-CLIENT-ID", "Secret": "OKTA-CLIENT-SECRET", "Scopes": ["openid", "email"], "DiscoverURL": "https://your-okta-domain/.well-known/openid-configuration", "SkipUserInfoRequest": false }] }, "CustomUserIDField": "email" // 使用邮箱作为用户ID }
Salesforce配置
json{ "ProviderConfig": { "UseProviders": [{ "Name": "salesforce", "Key": "SF-CLIENT-ID", "Secret": "SF-CLIENT-SECRET" }] }, "ProviderName": "SocialProvider" }
LDAP提供者通过LDAP协议验证用户身份,以下是仪表板登录配置示例:
json{ "ActionType": "GenerateOrLoginUserProfile", "ID": "3", "OrgID": "YOUR-ORG-ID", "ProviderConfig": { "LDAPBaseDN": "cn=users,dc=example,dc=com", "LDAPEmailAttribute": "mail", "LDAPFilter": "((objectClass=user)(cn=*USERNAME*))", "LDAPPort": "389", "LDAPServer": "ldap.example.com", "LDAPUserDN": "cn=*USERNAME*,cn=users,dc=example,dc=com" }, "ProviderName": "LDAPProvider", "ReturnURL": "http://dashboard.domain.com/tap", "Type": "redirect" }
SAML提供者与SAML身份提供者集成,配置示例:
json{ "ActionType": "GenerateOrLoginUserProfile", "ID": "4", "ProviderName": "SAMLProvider", "ProviderConfig": { "SAML": { "IDPMetaDataURL": "https://idp.example.com/metadata", "SPEntityID": "http://tib.domain.com/saml", "ACSURL": "http://tib.domain.com/auth/4/saml/callback" } }, "ReturnURL": "http://dashboard.domain.com/tap", "Type": "redirect" }
TIB提供REST API管理配置文件,默认监听端口3010。
请求:
http://{TIB_HOST}:3010/api/profilesAuthorization: {TIB_SECRET}(tib.conf中的Secret)响应:
json{ "profiles": [/* 配置文件列表 */] }
请求:
http://{TIB_HOST}:3010/api/profilesAuthorization: {TIB_SECRET}响应:
json{ "status": "ok", "message": "Profile added" }
请求:
http://{TIB_HOST}:3010/api/profiles/{PROFILE_ID}Authorization: {TIB_SECRET}响应:
json{ "status": "ok", "message": "Profile updated" }
请求:
http://{TIB_HOST}:3010/api/profiles/{PROFILE_ID}Authorization: {TIB_SECRET}响应:
json{ "status": "ok", "message": "Profile deleted" }
请求:
http://{TIB_HOST}:3010/api/profiles/saveAuthorization: {TIB_SECRET}响应:
json{ "status": "ok", "message": "Profiles saved to disk" }
结果:配置文件将保存到profiles.json文件中。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务