猿问

了解WCF Windows身份验证

我有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成员资格提供程序进行比较


Qyouu
浏览 683回答 2
2回答

红糖糍粑

只有有权访问(登录)“ SERV1”的用户才能访问该服务吗?是的-这就是在WCF服务中使用Windows凭据的关键。只有在该Active Directory域中拥有域帐户(或与您的域具有双向完全信任关系的单独域)的用户才能访问该服务。还是所有能够登录办公室网络(使用活动目录凭据)的用户都可以使用该服务?WCF安全边界是Active Directory域&nbsp;-不是特定的服务器。有没有一种方法可以确保只有经过CIO批准的应用程序才能访问该服务,并使该服务保持Windows身份验证?这些“经CIO批准”的应用程序与其他应用程序有何不同?WCF由帐户(通常是用户帐户)访问。您可以限制哪些帐户可以访问您的服务(例如,要求这些帐户成为给定AD组的成员或其他内容)。您不能真正基于应用程序“限制”(仅当那些应用程序使用特定的应用程序级帐户访问WCF服务时)是对每个服务操作调用还是仅对第一个调用进行此身份验证检查?取决于您的服务-如果您使用按呼叫的&nbsp;WCF服务,则将针对每个呼叫进行检查。如果在启用“安全协商”的情况下使用按会话的&nbsp;WCF服务,则检查将在会话开始时进行一次,直到会话结束才进行检查。服务有什么办法可以知道用户的Windows凭据?是-&nbsp;OperationContext.Current.ServiceSecurityContext.WindowsIdentity&nbsp;是用于调用服务的Windows凭据(Windows身份)。不仅仅是用户名.....

慕盖茨4494581

这不是身份验证任务,而是授权任务。Kerberos负责确保用户通过身份验证(您获得的名称就是他们的真实姓名)。LDAP管理授权。在Windows上下文中,这意味着用户应该是某个允许访问服务器材料组的成员(并且该服务必须检查情况是否如此)。应用程序?并不是的。也就是说,Active Directory中有两种经过身份验证的主体:用户和计算机。但是,如果正在运行的用户具有连接到服务的权限,那么为什么运行什么应用程序无关紧要?换句话说,您不能阻止某人使用他们自己的代码来完全执行您的代码将要执行的操作。没关系&nbsp;身份验证有效,不是吗?实际情况是,正在向该应用程序传递票证,以证明该用户已通过身份验证(已向KDC,即活动目录服务器)。是的,从某种意义上讲,安全性上下文是用户的凭据集。他们可能还具有其他凭据,但是您也可以获取这些凭据。
随时随地看视频慕课网APP
我要回答