小编Mau*_*odi的帖子

IdentityServer4定制AuthorizeInteractionResponseGenerator

可悲的AuthorizeInteractionResponseGenerator是,非常缺少有关IdentityServer4中自定义实现的文档。

我正在尝试实现自己的方法,AuthorizeInteractionResponseGenerator因为我需要进一步的用户交互步骤(在身份验证之后)。我的情况是,一个身份(电子邮件)可以与多个租户关联。因此,登录后,我需要向用户显示相关租户的列表,以便他们可以选择一个。

我已经评估了源代码,并提出了以下定制AuthorizeInteractionResponseGenerator

public class AccountChooserResponseGenerator : AuthorizeInteractionResponseGenerator
    {
        public AccountChooserResponseGenerator(ISystemClock clock, 
            ILogger<AuthorizeInteractionResponseGenerator> logger, 
            IConsentService consent, IProfileService profile) 
            : base(clock, logger, consent, profile)
        {
        }

        public override async Task<InteractionResponse> ProcessInteractionAsync(ValidatedAuthorizeRequest request, ConsentResponse consent = null)
        {
            var response = await base.ProcessInteractionAsync(request, consent);
            if (response.IsConsent || response.IsLogin || response.IsError)
                return response;

            return new InteractionResponse
            {
                RedirectUrl = "/Organization"
            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

它继承自IdentityServer4内置的基本AuthorizeInteractionResponseGenerator,因此可以显示标准的“登录”和“同意”页面。发生这种情况,然后将用户正确重定向到该/OrganizationURL以选择组织(承租人)。

但是那又怎样呢?由于缺乏文档和示例,我真的很难找出以下两个问题:

1)现在,如何在选择租户后向我的自定义AccountChooserResponseGenerator指示我的交互已完成,并且现在可以将用户重定向回客户端?

编辑:

对1的答案:为了表明交互已完成,您必须返回一个空的新InteractionResponse()。就我而言,检查TenantId声明是否存在就足够了,如下所示:

if (!request.Subject.HasClaim(c=> c.Type == "TenantId" && c.Value …
Run Code Online (Sandbox Code Playgroud)

c# identityserver4

6
推荐指数
1
解决办法
747
查看次数

确定Windows CE可执行文件使用的16位CRC /校验和算法的方法?

我需要对由Windows CE可执行文件实现的CRC /校验和算法进行逆向工程.作为提议协议,它没有说明CRC /校验和算法.但是,有控制台接口报告正确/计算的校验和,如果消息协议正确,我可以使用随机位构造自己的消息:

我观察到了,

  • 更改消息中的单个位会完全更改校验和字节.

  • 算法似乎与位置有关,因为我在各种消息数据位置输入一些单个1位消息,其余的位为零,并且所有时间控制台都报告了不同的校验和.如果它是简单的加法校验和,则校验和将是相同的.

我应用了常见的XOR,LRC,附加校验和算法,常见的CRC多项式(Standerd,CCITT,X-modem)并经历了[CRC逆向工程论文] [2],但不幸的是我不能超过推导多项式,因为消息类型是固定的,所以无法创建单个1位消息.

我的问题:

  1. 是否有任何CRC /校验和算法属性,我可以测试消息,以确定算法是校验和还是基于多项式的CRC?

  2. 有没有办法将程序反汇编中看到的错误信息与相应的汇编指令联系起来?

  3. 在控制台上报告正确的校验和时,有什么方法可以调试/查明反汇编代码?内存转储还是什么?

checksum reverse-engineering crc disassembly windows-ce

5
推荐指数
1
解决办法
5892
查看次数

如何使用 EF Core 无密钥实体的 OData 公开可查询 API(数据库视图)?

我正在使用https://www.nuget.org/packages/Microsoft.AspNetCore.OData/7.3.0使用 ASP.NET Core 3.1 API 公开基于 OData 4 的 Querable API

我有带有无键实体(数据库视图)的 EF 数据上下文,当我尝试使用基于 OData 约定的模型公开它时

   modelBuilder
   .Entity<Student>(eb =>
    {
        eb.HasNoKey();
        eb.ToView("vw_students", "public");
    });
Run Code Online (Sandbox Code Playgroud)

这是我的 OData EDM 模型与 EF Core 实体类型的映射

var edmBuilder = new ODataConventionModelBuilder();
edmBuilder.EntitySet<Student>("Students");       
return edmBuilder.GetEdmModel();
Run Code Online (Sandbox Code Playgroud)

我在这条线上收到错误 edmBuilder.GetEdmModel() 实体集“Students”基于没有定义键的类型“ODataCore31.Student”。

我的问题 - 1) OData 模型本身支持无键实体类型吗?2)有什么解决方法吗?

rest odata asp.net-core-3.1 ef-core-3.1

4
推荐指数
1
解决办法
1269
查看次数