锁定 OpenID 连接提供者
可供测试的模拟 OpenID 连接提供者 .
此提供者基于 OpenID 连接核心 1.0 规格, (中文(简体) ), 并受到 OpenID 提供者模拟器 财务报告和审定财务报表 橡皮- 模具服务器。 。 。 . JWT和加密功能 乔斯。 。 。 .
重要安全说明: 这个模拟提供者只用于开发和测试。 它缺乏全面的安全性能,持续存储,并完全遵守了OpenID Connect的所有要求. 不要在生产中使用,或将其公开在公共互联网上.
- 不保护CSRF
- 没有限制或虐待保护的费率
- 所有会话和令牌只存储在记忆中
- 会话 cookie 需要本地主机或 HTTPS
- 并非所有OIDC的规格特性和预付索偿都得到落实
使用量
您可以通过 npx 或者说 docker。 。 。 .
与 npx
npx @bluecateng/mock-oidc-provider
与 docker
docker run --name mock-oidc-provider --rm -p 8092:80 ghcr.io/bluecatengineering/mock-oidc-provider
配置
参数
服务器可以通过命令行参数或环境变量配置.
| 命令行 | 环境 var | 说明 | 默认 |
|---|---|---|---|
| -p, -- -- 端口 | 港口 | hTTP 服务器将聆听的端口 | 8092 (英语) |
| -s, --tls-port (英语) | 端口( T) | hTTPS 服务器会听的端口( 当启用 TLS 时) | 8443号 |
| -t, -ttl (英语) | TTL 电话 | 活的时间为符 (秒) | 三百块 |
| 用户 | 用户( F) | 用户 YAML 文件的路径 | |
| -我 客户 | 单位( F) | 客户端 YAML 文件的路径 | |
| -c, --cert (英语) | CERT 文件夹 | TLS 证书文件( 见 TLS 一节) | |
| -k, --键 | 关键文件( F) | TLS 私有密钥文件( 参见 TLS 一节) | |
| -i, -- -- 发行商 | 乌拉圭 | 要使用的静态发行器 URL 而不是请求主机 | |
| - j, - jwk (英语) | JWK 文件夹 | 用于签名符号的 JWK 文件的路径 | |
| -- 拯救 -- jwk | 将活动 JWK 保存到给定文件 |
若为 --jwk 未提供,则自动生成随机的RSA密钥.
使用 --save-jwk <file> 将活动 JWK( 生成或装入) 写入 JSON 文件, 供以后再使用.
发行人
发行商是 issuer 字段和 iss 在每一个标志.
它也决定了发现文件中所发表的端点URL,这样它们就总是互相同意.
若为 --issuer 未提供,发行人从每项请求中衍生出: <protocol>://<host>/
(结束于 / 为 Auth0 兼容性。 转至 --issuer 用于逐字记录.
在反向代理后面
这个 X-Forwarded-Proto 财务报告和审定财务报表 X-Forwarded-Host 信封是荣誉的,所以一个供应商在后面跑
TLS 终止代理广告 https:// URL,而不是内部的:
issuer https://auth.example.com/
authorization_endpoint https://auth.example.com/authorize
这些信头是从 任意 客户端,这意味着一个呼叫者可以影响所公告的URL. 设定 --issuer 将发行者固定在固定值中,而不论收到的标题.
用户
默认情况下,提供两个用户(foo 财务报告和审定财务报表 bar) (中文(简体) ).
如果提供了用户文件, 它 替换 默认用户.
用户文件格式( YAML) :
- 顶级值必须是数组 .
- 每个阵列条目必须是包含以下内容的对象:
sub(字符串):主题标识符.- 可选的其他要求包括进入和身份证.
- 可选
idClaims: 包含 仅限 身份证明. - 可选
accessClaims: 包含 仅限 在进入标志.
示例
- sub: eeny
email: [email protected]
idClaims:
name: Eeny
accessClaims:
mock: a
- sub: meeny
email: [email protected]
idClaims:
name: Meeny
accessClaims:
mock: b
- sub: miny
email: [email protected]
idClaims:
name: Miny
accessClaims:
mock: c
客户
默认情况下,将提供一个客户端(baz) (中文(简体) ).
如果提供客户端文件 替换 默认客户端.
客户端文件格式( YAML) :
- 顶级值必须是数组 .
- 每个阵列条目必须是包含以下内容的对象:
sub(字符串):客户端标识符.- 可选的附加要求将包含在访问符中.
示例
- sub: service-a
role: machine
- sub: service-b
team: platform
电话
为了启用HTTPS,请具体说明:
--cert <file>--key <file>
这些文件直接传递给
https.createServer。 。 。 .
TLS 启用时 :
- 一个 HTTP 服务器 永远 运行
--port(默认:8092). - HTTPS 服务器也在运行
--tls-port(默认:8443).
如果没有启用 TLS( 没有指定证书/ 密钥), 只有 HTTP 服务器运行 .
终点
发现文件/.well-known/openid-configuration) 暴露所有支持的端点.
主要终点:
/.well-known/openid-configuration- OIDC发现元数据/.well-known/jwks.json- JWKS 用于符号验证/authorize- 授权终点/oauth/token- 托肯端点/oauth/revoke- 托肯撤销/oidc/logout- 结束会话/userinfo— 用户信息端点/introspect——深入回顾/api/clear—— 说 测试工具: 清除所有会话和授权代码
支持的工作流量
- 授权代码流
- 授权代码随 PKCE 流动
- 客户证书流程
- 资源所有者密码流程
这个 隐性流动 实值 没有 已支持.
支持的索赔和范围
- 所有用户对象属性都同时出现在访问和ID符中,除了:
idClaims: 仅限标识符accessClaims: 仅限访问符
/userinfo返回所有用户要求;范围是 未执行。 。 。 .- 标准OIDC范围
openid, (中文(简体) ),profile, (中文(简体) ),email)被接受但不严格验证.
已知的限制
- 还没准备好.
- 未完全遵守OIDC.
- 所有状态被存储在记忆中.
- 没有CSRF的保护,没有限制费率.
- 最小验证客户端认证 .
- 只能用于当地开发或CI环境.
示例 OIDC 客户端配置
发现 URL :
http://localhost:8092/.well-known/openid-configuration
客户端配置 :
- 客户名 : 任意字符串( 客户认证未执行)
- 重定向 URI : 必须匹配传递到的值
/authorize - 范围:
openid profile email或视需要 - 反应类型 :
code