You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置IdentityServer实现不同用户组禁止跨客户端认证

结论

不需要更换身份认证提供商,完全可以通过IdentityServer的原生配置实现员工端与客户侧应用的登录态隔离,你提到的scopes、claims、audiences配置都可以配合使用达成目标。

具体实现方案

1. 隔离SSO会话,从根源避免自动认证

IdentityServer的SSO特性并非强制所有客户端共享登录态,你可以通过客户端配置直接关闭跨端SSO:

  • 在IdentityServer的Client配置中,给客户侧应用、员工侧应用分别创建独立的客户端条目
  • 将两类客户端的EnableSso属性设置为false(Duende IdentityServer),或者配置客户端OIDC初始化参数时固定传入prompt=login
    // IdentityServer服务端客户端配置示例
    new Client
    {
        ClientId = "CustomerWeb",
        ClientName = "客户侧Web端",
        EnableSso = false,
        // 其余配置省略
    },
    new Client
    {
        ClientId = "AdminWeb",
        ClientName = "员工侧Web端",
        EnableSso = false,
        // 其余配置省略
    }
    
    配置完成后,即使用户在某一类客户端完成登录,访问另一类客户端时也会强制跳转登录页,不会触发自动认证。

2. 结合Scope与Audience做二次校验

如果需要额外加一层防护,避免令牌错用,可以通过以下配置实现:

  • 分别定义两类独立的ApiScope:customer_api、admin_api,对应绑定不同的Audience
  • 客户侧应用申请令牌时只能请求customer_api scope,员工侧应用只能请求admin_api scope
  • 在两个Ocelot网关中分别配置认证规则:客户侧网关只接受Audience为customer_api的令牌,员工侧网关只接受Audience为admin_api的令牌
    该配置可以保证就算员工令牌意外流入客户侧应用,也会被网关直接拦截,无法通过认证。

内容的提问来源于stack exchange,提问作者Dawid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:45:04