【问题标题】:Authenticating users for a intranet using smtp使用 smtp 对 Intranet 的用户进行身份验证
【发布时间】:2011-06-27 14:39:26
【问题描述】:

我收集了大约 400 个在我们公司使用电子邮件的用户,我们正在为他们创建一个内部网,我正在使用 .Net Framework (C#) 作为应用程序层。我们想使用与他们的电子邮件相同的凭据对这些用户进行身份验证,我们的电子邮件提供商没有此类服务,因此我想到了使用 SMTP 服务器对他们进行身份验证(这需要身份验证)。

我在SmtpClient 类上搜索了Authenticate() 方法,但无济于事,无法仅进行身份验证。以前有没有人解决过这种问题?我想我必须打开一个到 SMTP 服务器的套接字并自己发送命令,但也许有更简单的方法。

【问题讨论】:

    标签: c# .net authentication smtp pop3


    【解决方案1】:

    既然你有一个 SMTP 服务器,我假设你也有一个 POP3 服务器。我认为假设 POP3 和 SMTP 的凭据相同,我也很安全。

    如果我的假设是正确的(很有可能),您可以通过 POP3 而不是 SMTP 对其进行身份验证。

    因此,您可以使用Pop3Client 类,它提供了多种身份验证方法:

    这样,您的代码将:

    1. 连接
    2. 身份验证(检查异常)
    3. 断开连接

    一切准备就绪!

    【讨论】:

      【解决方案2】:

      对您的 SMTP 服务器使用 SmtpClient 您正在请求服务。您的应用程序应仅指定是否使用 Windows 身份验证(根据 Intranet 的配置方式将是 Kerberos 或 NTLM)或凭据规范,以及是否使用 SSL。

      关于应用认证,可以从System.Security.Principal.WindowsIdentity.GetCurrent()引用WindowsIdentity。更具体地说,您可以使用IsAuthenticated 属性。

      在尝试对 SMTP 服务器进行任何调用之前,如果您想使用 Windows 身份验证,请尝试以下操作:

      SmtpClient client = new SmtpClient(server, port);
      client.Credentials = CredentialCache.DefaultNetworkCredentials;
      

      然后让 SMTP 服务器授权用户是否可以实际执行尝试的操作。

      如果您想说,禁用操作按钮,因为 SMTP 服务器会拒绝用户尝试的操作,而您正试图主动并阻止用户做他不能做的事情,那么该拒绝必须是确定性的在访问 SMTP 服务器之前(即,您不会简单地依赖 SMTP 服务器来告诉您这一点;您需要某种业务安全层)。

      【讨论】:

        猜你喜欢
        • 2017-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-10
        • 2021-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多