gpt4 book ai didi

c# - 使用 WCF 的身份验证服务

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:34 25 4
gpt4 key购买 nike

我有一个自定义的 MembershipProvider,如下所示。它根据 Active Directory 验证用户名和密码。我想将其作为“身份验证服务”。即使客户端使用表单例份验证或 Windows 身份验证,这也应该有效。

有一个提供员工信息的 WCF“HR 服务”。 “HR UI”网站使用的是“HR Service”WCF 服务。现在我们需要确保任何使用“HR 服务”的客户端在访问“HR 服务”的操作之前都应该使用“身份验证服务”进行身份验证。如果客户端应用程序经过一次身份验证,则下次不应再次对其进行验证(直到应用程序关闭)。当打开客户端应用程序的新实例时,需要从头开始对其进行身份验证。

我们如何实现它?我们有端到端流程演示的代码示例吗?

注意:我应该能够使用自托管服务对其进行测试。

注意:客户端可以是任何平台(例如Java)。

namespace LijosCustomValidation
{
public sealed class LijoMembershipProvider : MembershipProvider
{

public override bool ValidateUser(string username, string password)
{
bool isValid = true;
//my logic to validate the user name and password
return isValid;
}

//other implementations of Abstract Methods from MembershipProvider
}

最佳答案

如果身份验证成功,您的身份验证服务应该返回一个 token 。然后应将此 token 依次提交给 HR 服务。

此时,对于人力资源服务部门的工作,您有多种选择。它可以知道验证 token 的 secret ,或者它需要调用身份验证服务来验证 token 。

如果您知道 secret , token 应该是可以验证的某个值,因此它可以是对称加密的东西,例如用户 ID。理想情况下,它应该包含时间组件以防止重放攻击。

我会建议一些像

<hash value>|<token issue time>|<user id>

散列值应该是第一个管道之后所有内容的散列值(sha1、md5 等)。然后,您可以对结果进行 base64 编码并将其传递。然后验证 token 可以检查发行日期是否在特定时间范围内。

您还可以选择将 token 存储在客户端的 cookie 中并作为 cookie 传递给服务,或者将其作为您服务的参数。可能还有其他选项,具体取决于您的客户端架构以及您希望如何构建服务。

关于c# - 使用 WCF 的身份验证服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9584198/

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