一尘不染

了解WCF Windows身份验证

c#

我有Windows身份验证服务。使用以下代码,我可以获得使用服务的用户的Windows身份(通过使用客户端)。

String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;

服务器中的配置为:

<binding name="messageSecurity">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>

我还阅读了服务器中的内容,它使用Kerberos来工作。

现在,我试图了解其在我们公司网络中的重要性。在办公室中,用户将使用其活动目录凭据登录到其桌面。我们的服务托管在名为“ SERV1”的Windows服务器中。

  1. 仅具有(登录)“ SERV1”访问权限的用户可以访问该服务吗?还是所有能够登录办公室网络(使用活动目录凭据)的用户都可以使用该服务?

  2. 有没有一种方法可以确保只有经过CIO批准的应用程序才能访问该服务,并使该服务保持Windows身份验证?

  3. 是对每个服务操作调用还是仅对第一个调用进行此身份验证检查?

  4. 服务有什么办法可以知道用户的Windows凭据?

注意:我了解WindowsAuthentication可以与成员资格提供程序进行比较-
从集中位置提供用户名和密码。可以将其与ASP.Net成员资格提供程序或Active Directory成员资格提供程序进行比较。

进一步阅读:

  1. ASP.NET Active Directory成员资格提供程序和SQL配置文件提供程序

  2. wcf数据合同授权

  3. http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel


阅读 233

收藏
2020-05-19

共1个答案

一尘不染

只有有权访问(登录)“ SERV1”的用户才能访问该服务吗?

是的-这就是在WCF服务中使用Windows凭据的关键。只有在该Active
Directory域中拥有域帐户(或与您的域具有双向完全信任关系的单独域)的用户才能访问该服务。

还是所有能够登录办公室网络(使用活动目录凭据)的用户都可以使用该服务?

WCF安全边界是 Active Directory域 -不是特定的服务器。

有没有一种方法可以确保只有经过CIO批准的应用程序才能访问该服务,并使该服务保持Windows身份验证?

这些“经CIO批准”的应用程序与其他应用程序有何不同?WCF由 帐户
(通常是用户帐户)访问。您可以限制哪些帐户可以访问您的服务(例如,要求这些帐户成为给定AD组的成员或其他内容)。您不能真正基于应用程序“限制”(仅当那些应用程序使用特定的应用程序级帐户访问WCF服务时)

是对每个服务操作调用还是仅对第一个调用进行此身份验证检查?

取决于您的服务-如果您使用 按呼叫的 WCF服务,则将针对每个呼叫进行检查。如果在启用“安全协商”的情况下使用 按会话的
WCF服务,则检查将在会话开始时进行一次,直到会话结束才进行检查。

服务有什么办法可以知道用户的Windows凭据?

是- OperationContext.Current.ServiceSecurityContext.WindowsIdentity
用于调用服务的Windows凭据(Windows身份)。不仅仅是用户名.....

2020-05-19