【问题标题】:Kerberos - multiple accounts on different subdirectoriesKerberos - 不同子目录上的多个帐户
【发布时间】:2018-01-09 01:00:49
【问题描述】:

我正在尝试通过 Windows Integrated Auth 为 WebApi 服务的内部套件实施 Kerberos。在此过程中,我学到了很多东西,并了解 SPN 在 Kerberos 上的重要性。

我面临的困难是我们有多个服务(最多 30 个),每个服务都有自己的服务帐户。它们托管在不同的子目录中,而不是作为子域。例如:

server.domain.com/reference.api
server.domain.com/client.api

似乎 SPN 与我的方案不兼容(默认情况下)。 SPN 必须针对服务器 (server.domain.com) 的 netbios 和 FQDN 进行注册,并且每个主机只能注册一个帐户。

我有什么选择?

我能想到的几种可能性是:

  1. 使用自定义服务类(即不是 HTTP),所以我会像这样注册一个 spn:

setspn -s referenceapi/server.domain.com 域/reference_api_user

  1. 在注册 spn 时使用可选的“服务名称”或专有名称 (https://msdn.microsoft.com/en-us/library/ms677601(v=VS.85).aspx)

这两种可能性的第一阶段是注册 SPN,这将是相当简单的,但我不确定我们需要在客户端做什么。由于这些服务都是内部的,我们可以完全控制每个客户。我们目前正在使用 HttpClient。

有什么建议吗?有没有人遇到过类似的问题?我不敢相信我是第一个尝试跨多个服务和帐户实施 Kerberos 的人,其中每个服务都是默认网站的子目录。

【问题讨论】:

  • 我不确定我是否完全理解为什么您的问题是一个障碍,但是我在类似(我认为)场景中使用的一个可能的解决方案是配置一个反向代理。您可以将每个“子目录”设置为自己的站点,将代理反向到原始位置。例如,reference.company.com 反向代理到server.company.com/reference。我可能没有完全理解这个问题,但我认为您的问题可以从网络服务器层解决,例如使用 IIS。

标签: c# windows authentication asp.net-web-api kerberos


【解决方案1】:

您混淆了身份验证和授权。注册一个 SPN,让用户进行身份验证并创建 30 个 Windows 组,添加您的用户并配置 IIS 以授权这些用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2015-06-23
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多