密码生成器结果的通用表示形式



这更像是一个讨论型问题。我正在开发一个有许多接口的系统,这些接口可以在不同的程序集中实现,这些程序集将根据需要在运行时加载。这种接口的一个例子是CCD_ 1。这是一个需要实现的通用通知程序:

using System;
using System.Collections.Generic;
using System.Linq;
using Company.MainModule.CentralLogging;
namespace Company.NotificationEngine
{
        public interface INotifier
        {
                 IAsyncResult BeginInvoke(Dictionary<String, object> parameters,AsyncCallback callBack,object state, LogMaster logMaster);
                 Dictionary<string,object> EndInvoke(IAsyncResult asyncResult);   
        }
}

现在,INotifier的一个实现示例:

namespace Company.NotificationEngine
{
    internal class SMSNotification : INotifier
    {
        #region Class Variables
        public IAsyncResult BeginInvoke(Dictionary<string, object> parameters, AsyncCallback callBack, object state, LogMaster logMaster)
        {
            // Send SMS
            return asyncResult;
        }
        public Dictionary<string, object> EndInvoke(IAsyncResult asyncResult)
        {
            return null;
        }

        #region Private Functions
    }
}

现在,按照相同的模式,我将创建一个名为IGenerator的通用密码生成器。它应该有两个函数:GeneratePasswordValidatePasswordGeneratePassword将基于实现程序集将定义的算法生成密码。ValidatePassword是我们需要的一个要求,因为不同的客户端具有不同的复杂性密码要求。生成密码后,必须对其进行验证。

现在,最近,我们切换到了。NET Framework 4.5和Visual Studio 2012。这两种方法都可能很耗时。GeneratePassword可以生成简单的字母数字密码或多页密码矩阵。类似地,ValidatePassword可能通过HTTP将生成的密码发送到客户端密码验证服务器/API。目前,我们正在使用BeginInvoke/EndInvoke模式。我想要GeneratePasswordAsyncINotifier0异步等待模式。他们将提供各自的已完成和取消选项/活动

Q:我可以在接口级别使用异步等待模式吗?

我们针对不同的软件、平台和操作系统进行密码重置。这就是为什么通用生成器。

我的下一个问题很可能是这两种方法的签名,因为我试图涵盖广泛的密码类型,并且需要了解什么应该足以满足返回类型;简单的Object<T>

您可以在接口级别使用异步和等待。请记住,async和await关键字是C#关键字,它们提供预打包的代码来处理现有的代码。Net接口。要么选择。Net标准接口或使用您自己的接口(因为您可能已经实现了它们)。

我认为使用"对象"是为了处理其他形式的身份验证,如数字证书或一次性密码(OTP)。然而,在这种情况下,身份验证主体可能希望发送一个nonce供另一方签名,而您上面的模式不包括多轮通信。

请记住,永远不要通过未加密的通道以纯文本形式传输密码。否则,它们可能会从网络中被嗅探出来。您可能还需要某种形式的重播攻击检测以及源和客户端身份验证,否则,有人可能会捕获对"ValidatePassword"的调用,然后重播以成功进行身份验证或在多次错误登录尝试后锁定帐户。

我知道在答案中提问是不好的形式,但如何指定用户名或其他身份?这是字典里的值之一吗?

最新更新