IdentityServer用于多用途数据库的应用程序

时间:2018-11-27 23:09:40

标签: identityserver4

我有2个软件,它们具有不同的业务逻辑,不同的数据库,并且都是多租户,每个用户都具有TenantId属性来标识其组织的数据

    $('#seatRed').click(function(){
        $('.seat').hide();
        $('#redBack').show().addClass('color-overlay');
    })
    $('#seatBlack').click(function(){
        $('.seat').hide();
        $('#blackBack').show().addClass('color-overlay');
    })
    $('#seatBlue').click(function(){
        $('.seat').hide();
        $('#blueBack').show().addClass('color-overlay');
    })
    $('#seatTeal').click(function(){
        $('.seat').hide();
        $('#tealBack').show().addClass('color-overlay');
    })
    $('#seatWhite').click(function(){
        $('.seat').hide();
        $('#whiteBack').show().addClass('color-overlay');
    })
    $('#seatWw').click(function(){
        $('.seat').hide();
        $('#wwBack').show().addClass('color-overlay');
    })



    $('#frameRed').click(function(){
        $('.frame').hide();
        $('#redFrame').show().addClass('color-overlay');
    })
    $('#frameBlack').click(function(){
        $('.frame').hide();
        $('#blackFrame').show().addClass('color-overlay');
    })
    $('#frameBlue').click(function(){
        $('.frame').hide();
        $('#blueFrame').show().addClass('color-overlay');
    })
    $('#frameTeal').click(function(){
        $('.frame').hide();
        $('#tealFrame').show().addClass('color-overlay');
    })
    $('#frameWhite').click(function(){
        $('.frame').hide();
        $('#whiteFrame').show().addClass('color-overlay');
    })
    $('#frameWw').click(function(){
        $('.frame').hide();
        $('#wwFrame').show().addClass('color-overlay');
    })

我想统一登录并实施dbo.Xpto.Where(x => x.TenantId == userLogged.TenantId); ,我对此感到怀疑,如果每个软件中的identityserver用户不同,我该如何捕获用户tenantId

我考虑添加版权声明,例如新的tenantIdClaim ("SoftwareOne:TenantId", 123)并由new Claim ("SoftwareTwo:TenantId", "8f8b8d87-fc07-4508-a33a-2b5f55820836")请求

1 个答案:

答案 0 :(得分:0)

您需要查看身份验证授权分开。

使用IdentityServer进行身份验证并一般授权(并且我的意思是没有特定上下文的声明)用户。实际的授权是在本地或由单独的授权服务器完成的。

我的设置如下:

  • 身份上下文:用户+用户声明。仅用于身份验证。 与上下文无关,例如作为自由顾问,我在不同的组织中扮演着特定的角色,而我的职业却保持不变。

    因此 profession 声明将是UserClaim,而 Role 则是授权声明。

  • 授权上下文:用户(id =子声明)+每个应用程序:角色,权限等。在单独的“本地”数据库或中央数据库中。 特定于上下文,仅用于授权。看看PolicyServer

    您可以实现resource-based authorization而不是授权服务器,也可以与授权服务器结合使用。

  • 业务环境:用户(Id,名称,“外键”子声明,由于表不在上下文中而没有实际的数据库关系)+团队,个人资料,设置等。省略了用户表时链接到子声明值。

有关其他信息,请参见我的答案here