gpt4 book ai didi

c# - N 层应用程序身份验证(RabbitMQ 作为代理,C# 作为业务层)- WIF 可能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:59 24 4
gpt4 key购买 nike

我目前正在开发一个以 C# 作为业务层的 N 层应用程序。这是一种 ERP,我需要为此应用程序进行身份验证(电子邮件/密码)。我还需要基于登录的权限(创建订单、删除文章)所有这些信息都应该存储在一个数据库中。

作为 UI 客户端,我计划制作 WPF 客户端、ASP.Net,也许在未来的 iPhone/Android 中。作为消息代理,我使用 RabbitMQ(客户端仅通过 AMQP 与业务层通信。由于优势,我有多个业务层用于循环调度)。

在我对 N 层应用程序中的身份验证的研究中,我发现了一个针对 Windows Identity Foundation 的建议。 WIF 对我来说是全新的。我找到的所有示例都只处理 ASP.Net 应用程序。

我现在的问题是:WIF 对我来说是正确的还是我应该自己实现这个 session 处理?

如果 WIF 可以满足我的需求,那么最好的处理方式是什么?我是否必须实现自定义 STS 并将其放置在 WCF 服务中?

最佳答案

正如您明确提到 RabbitMq,我建议您使用 ServiceStack 作为您的服务接口(interface)。

一般而言,MQ 的一个问题是它们与任何元信息(例如 HTTP header )分离以注入(inject)身份验证。相反,您应该在消息中提供属性 Session(带预身份验证)或 UserNamePassword(不推荐使用后者,因为凭据以普通方式传递)。带有内置 SessionFeature ServiceStack 的示例解决方案可用 in their documentation .

ServiceStack 的另一个不错的特性是您不仅可以使用 AuthenticateAttribute 装饰您的处理程序,还可以使用 RequiredRoleAttributeRequiredPermissionAttribute 装饰您的处理程序。

此外:您打算如何使用 Android 对消息进行排队?您能否将内部 MQ 公开给外部,是否有适用于 Android 等的客户端?因此,我建议使用 HTTP 上的双端点在您选择使用的任何 MQ 中对消息进行排队。有关如何将 MQ 集成到 HTTP 服务中的更多信息,请参阅 in the documentation .

使用 ServiceStack,您可以根据需要旋转任意数量的消费者实例,因为有 is a plain communication without all the serivce stuff available .

琐事:因为我正在撰写一本即将出版的关于掌握 ServiceStack 的书,所以我有点偏颇。尽管如此,我确实在书中涵盖了您的大部分问题,并提供了代码示例:场景的点点滴滴 are already covered here (不要被特定的 MQ 吓到,它们是可以互换的)。

关于c# - N 层应用程序身份验证(RabbitMQ 作为代理,C# 作为业务层)- WIF 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31054744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com