gpt4 book ai didi

c# - 了解 WCF Windows 身份验证

转载 作者:太空狗 更新时间:2023-10-29 20:05:40 26 4
gpt4 key购买 nike

我有一项带有 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 可以比作成员(member)提供程序 - 从集中位置提供用户名和密码。它可以与 ASP.Net Membership Provider 或 Active Directory Membership Provider 进行比较。

进一步阅读:

  1. ASP.NET Active Directory Membership Provider and SQL Profile Provider

  2. wcf data contracts authorization

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

最佳答案

Can only users who have access (to login) to “SERV1” access the service?

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

Or all users who are able to login to the office network (suing active directory credentials) will be able to consume the service?

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

Is there a way to ensure that only CIO approved applications will be accessing the service, keeping the service as windows authenticated?

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

Does this authentication check happen for each service operation call or only for the first call?

取决于您的服务 - 如果您使用per-call WCF 服务,那么每次调用都会进行检查。如果您使用启用了“安全协商”的每 session WCF 服务,则检查会在 session 开始时发生一次,直到 session 结束才会再发生。

Is there any way the service will be able to know the windows credentials of the user?

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

关于c# - 了解 WCF Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com