LCJ*_*LCJ 7 .net c# asp.net wcf windows-authentication
我有一个Windows身份验证服务.使用以下代码,我可以获得(通过使用客户端)消费该服务的用户的Windows标识.
String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
Run Code Online (Sandbox Code Playgroud)
服务器中的配置是:
<binding name="messageSecurity">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
Run Code Online (Sandbox Code Playgroud)
我还读到,在服务器中,它使用Kerberos来实现这一点.
现在,我试图了解它在我们企业网络中的重要性.在办公室中,用户将使用其活动目录凭据登录其桌面.我们的服务托管在名为"SERV1"的Windows服务器中.
只有访问(登录)"SERV1"的用户才能访问该服务吗?或者所有能够登录办公室网络的用户(起诉活动目录凭证)都可以使用该服务?
有没有办法确保只有CIO批准的应用程序才能访问该服务,将服务保持为Windows身份验证?
是否针对每个服务操作呼叫或仅针对第一个呼叫进行此身份验证检查?
有什么方法服务将能够知道用户的Windows凭据?
注意:据我所知,WindowsAuthentication可以与会员提供商进行比较 - 从集中位置提供用户名和密码.它可以与ASP.Net成员资格提供程序或Active Directory成员资格提供程序进行比较.
进一步阅读:
mar*_*c_s 10
只有有权访问(登录)"SERV1"的用户才能访问该服务吗?
是的 - 这是在WCF服务中使用Windows凭据的重点.只有在该Active Directory域中具有域帐户的用户(或与您的域具有双向完全信任关系的单独域)才能访问该服务.
或者所有能够登录办公室网络的用户(起诉活动目录凭证)都可以使用该服务?
WCF安全边界是Active Directory域 - 而不是特定的服务器.
有没有办法确保只有CIO批准的应用程序才能访问该服务,将服务保持为Windows身份验证?
那些"CIO认可"的应用程序与其他应用程序有何不同?WCF由帐户访问- 通常是用户帐户.您可以限制哪些帐户可以访问您的服务(例如,要求这些帐户成为给定AD组的成员或其他内容).您无法真正根据应用程序"限制"(仅当这些应用程序使用特定的应用程序级帐户来访问您的WCF服务时)
是否针对每个服务操作呼叫或仅针对第一个呼叫进行此身份验证检查?
取决于您的服务 - 如果您使用每次呼叫的 WCF服务,则每次呼叫都会进行检查.如果您使用启用了"安全协商" 的每会话 WCF服务,则会在会话开始时进行一次检查,直到会话结束为止.
有什么方法服务将能够知道用户的Windows凭据?
是 - OperationContext.Current.ServiceSecurityContext.WindowsIdentity
是用于呼叫您的服务的Windows凭据(Windows身份).它不仅仅是用户名......