我有Windows身份验证服务。使用以下代码,我可以获得使用服务的用户的Windows身份(通过使用客户端)。
String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
服务器中的配置为:
<binding name="messageSecurity"> <security mode="Message"> <message clientCredentialType="Windows"/> </security> </binding>
我还阅读了服务器中的内容,它使用Kerberos来工作。
现在,我试图了解其在我们公司网络中的重要性。在办公室中,用户将使用其活动目录凭据登录到其桌面。我们的服务托管在名为“ SERV1”的Windows服务器中。
仅具有(登录)“ SERV1”访问权限的用户可以访问该服务吗?还是所有能够登录办公室网络(使用活动目录凭据)的用户都可以使用该服务?
有没有一种方法可以确保只有经过CIO批准的应用程序才能访问该服务,并使该服务保持Windows身份验证?
是对每个服务操作调用还是仅对第一个调用进行此身份验证检查?
服务有什么办法可以知道用户的Windows凭据?
注意:我了解WindowsAuthentication可以与成员资格提供程序进行比较- 从集中位置提供用户名和密码。可以将其与ASP.Net成员资格提供程序或Active Directory成员资格提供程序进行比较。
进一步阅读:
ASP.NET Active Directory成员资格提供程序和SQL配置文件提供程序
wcf数据合同授权
http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel
只有有权访问(登录)“ SERV1”的用户才能访问该服务吗?
是的-这就是在WCF服务中使用Windows凭据的关键。只有在该Active Directory域中拥有域帐户(或与您的域具有双向完全信任关系的单独域)的用户才能访问该服务。
还是所有能够登录办公室网络(使用活动目录凭据)的用户都可以使用该服务?
WCF安全边界是 Active Directory域 -不是特定的服务器。
这些“经CIO批准”的应用程序与其他应用程序有何不同?WCF由 帐户 (通常是用户帐户)访问。您可以限制哪些帐户可以访问您的服务(例如,要求这些帐户成为给定AD组的成员或其他内容)。您不能真正基于应用程序“限制”(仅当那些应用程序使用特定的应用程序级帐户访问WCF服务时)
取决于您的服务-如果您使用 按呼叫的 WCF服务,则将针对每个呼叫进行检查。如果在启用“安全协商”的情况下使用 按会话的 WCF服务,则检查将在会话开始时进行一次,直到会话结束才进行检查。
是- OperationContext.Current.ServiceSecurityContext.WindowsIdentity 是 用于调用服务的Windows凭据(Windows身份)。不仅仅是用户名.....
OperationContext.Current.ServiceSecurityContext.WindowsIdentity