资讯动态

Dashy 如何用 allowedIssuers 接受 Microsoft Entra 多租户 OIDC 的令牌

发布时间:2026/9/13 22:58:46 来源:尧图企业网站定制
Dashy 如何用 allowedIssuers 接受 Microsoft Entra 多租户 OIDC 的令牌【免费下载链接】dashy A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!项目地址: https://gitcode.com/GitHub_Trending/da/dashy把 Dashy 的 OIDC 认证指向 Microsoft Entra 的多租户端点organizations或common后会遇到一个固定的失败id_token 里的ississuer与 Dashy 从 discovery 文档读到的 issuer 不一致服务端令牌校验直接失败API 请求被拒。Dashy 为此提供了appConfig.auth.oidc下的allowedIssuers选项显式列出要接受的租户 issuer URL。本文按配置 → 验证的顺序说明这个选项怎么用前提是 Dashy 的 OIDC 登录已经可用。为什么多租户令牌的校验会失败Dashy 的服务端读取conf.yml中的auth.oidc后会懒加载地拉取endpoint的 OIDC discovery 文档和 JWKS然后校验 SPA 附加在每次 API 请求上的id_token请求头为Authorization: Bearer id_token。凡是签名、issuer、audience、过期时间任一项校验失败的令牌都被以401拒绝这一机制见 docs/authentication/oidc.md 的How server-side enforcement works一节与 services/utils/auth-oidc.js 中的jwtVerify调用。单租户 provider 下令牌的iss与 discovery 文档中的 issuer 一致校验自然通过。使用 Entra 的organizations/common端点时令牌 issuer 是带租户 ID 的 URL与 discovery 文档不匹配验证失败。allowedIssuers就是针对这种情况设置后令牌只有在iss命中列表中某一项时才被接受签名、audience 和过期时间检查仍然生效普通单租户 provider 应保持该选项不设置。前置条件一份可用的 OIDC 配置配置allowedIssuers之前Dashy 需要已有可用的 OIDC 登录最小配置形如摘自 docs/authentication/oidc.mdappConfig: disableConfigurationForNonAdmin: true auth: enableOidc: true oidc: clientId: dashy endpoint: https://auth.example.com/application/o/dashy/ scope: openid profile email groups adminGroup: dashy-admins文档中对这些字段有几个明确要求endpoint填 issuer URL不是.well-known地址。服务端自己会拼接 discovery 路径fetchDiscovery在endpoint后附加.well-known/openid-configuration见 services/utils/auth-oidc.js。Dashy 是 SPA需要在 provider 侧做 public client 注册并启用 PKCE。设置adminGroup时scope必须包含groupsadminRole则对应roles否则 IdP 不会把该 claim 放进 id_token。如果clientId是纯数字必须加引号否则 YAML 会把它解析成数字超过 JavaScript 安全整数范围约 15 位后精度丢失client ID 匹配失败。配置 allowedIssuers修改conf.yml中oidc块endpoint指向 Entra 的多租户端点并在同一块下添加allowedIssuers以下片段来自 docs/authentication/oidc.md 的Multi-tenant providers一节oidc: clientId: dashy endpoint: https://login.microsoftonline.com/organizations/v2.0/ allowedIssuers: - https://login.microsoftonline.com/your-tenant-id/v2.0your-tenant-id是占位符替换为你 Entra 租户的租户 IDGUID对应签发令牌的租户。要接受多个租户的令牌在数组中逐个追加 issuer URL每个租户一行该选项的定义就是 List of issuer URLs to accept tokens from见 docs/configuring.md 的appConfig.auth.oidc字段表。值的格式有硬性约束必须是非空字符串数组。空数组或非数组值会被视为未设置回退到 discovery 文档中的 issuer行为可由 tests/server/auth-oidc.test.js 与 services/utils/auth-oidc.js 中的loadOidcSettings确认选项定义同时出现在 docs/authentication/oidc.md、docs/configuring.md 与 ConfigSchema.json 中三处描述一致。服务端在启动时读取auth.oidc因此改完配置后需要重启 Dashy 服务新 issuer 列表才会生效。如何验证判断依据都来自文档描述的服务端校验行为在浏览器走一遍 Entra 登录。登录成功后SPA 会把 id_token 作为 Bearer 令牌附加到每次 API 请求上服务端按allowedIssuers校验原本因 issuer 不匹配而失败的场景现在应通过仪表板正常加载。如果令牌仍未通过签名 / issuer / audience / 过期校验请求会被拒为401响应体是Unauthorized - Invalid or expired token见 services/utils/auth-oidc.js。改完配置仍 401 时核对allowedIssuers中的 URL 是否与令牌iss完全一致以及服务是否已重启。未登录状态请求/conf.yml会得到精简响应只含auth块与最小pageInfo足够 SPA 引导登录流程完整配置只发给已认证用户。若设置了adminGroup/adminRole写端点POST /config-manager/save额外要求 token 的groups/rolesclaim 命中非管理员收到403——可以顺手确认管理员 claim 解析正常。边界与注意事项单租户 provider 不要设置allowedIssuers。一旦设置discovery 文档中的 issuer 不再被采用只有列表内的 issuer 会被接受配置错误会导致所有登录失败。allowedIssuers只放宽 issuer 匹配不放宽签名、audience、过期时间检查。disableServerSideCheck: true会跳过全部服务端校验loadOidcSettings直接返回 nullallowedIssuers也随之不生效文档明确不推荐在非受信网络中使用。【免费下载链接】dashy A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!项目地址: https://gitcode.com/GitHub_Trending/da/dashy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价