问题标签 [kerberos-delegation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kerberos - 转发的 Kerberos 票证可以续订吗?
假设我们有以下情况:我们有一台机器,它获取了它的票,然后这张票已经转发到另一台机器。那台机器可以更新收到的票吗?
其他问题 - 如果获得票的机器更新它,该票被转发到的其他机器是否必须自己更新这张票?或者一旦初始机器更新它就会立即失效?
c# - 即使使用 SPN 并允许在计算机上进行委派,ImpersonationLevel 仍然是模拟而不是委派
即使使用 SPN 并允许机器上的 Kerberos 委派,我的 WindowsIdentity 上的 ImpersonationLevel 仍然是模拟而不是委派。
我在开发中有完全相同的设置,在那里我也双跳到开发服务器。我正在尝试将其发布到实时服务器,但我不断收到模拟错误,我无法将模拟级别设置为“委托”
还需要做什么?调试 Kerberos 似乎是不可能的——有没有办法查看它正在检查哪些 SPN?
c++ - 实现基于资源的约束委派
我正在寻找在 C++ 中实现基于资源的约束委派,这是 Windows Server 2012 的新功能。
编辑:执行此操作的 IIS 模块的代码也很棒。
与允许帐户委托给特定 SPN 的经典 KCD 不同,这里的帐户可以被允许委托给由特定用户帐户运行的任何程序。通过修改运行被委派的服务的用户的“-PrincipalsAllowedToDelegateToAccount”属性来授予权限。
有关更多信息,请参阅:基于资源的约束委派
任何人都可以为我提供实现此或有用资源的代码示例吗?
甚至对使用此新功能的商业产品的引用也可能很有用。
谢谢,
戴夫
web-services - Programmatic Impersonation Delegation For Remote Resources (Double-Hop)
I am having a hard time to get Runtime Impersonation to work.
Scenario:
- Anonymous access is disabled in all servers, and windows auth is enabled
- Client calls Web Api 1
- Web Api 1 may call Web Api 2, or the oData Service
- Call from Web Api 1 to Web Api 2 needs to be impersonated with the Client Credentials
- Calls from Web Api 1 to oData Service must not be impersonated
- Web Api 1 calls both the service using Web Request
- We have Kerberos delegation configured properly
What Works (Kinda):
If I turn on impersonation in Web Api 1 using the Web.config
- All calls are getting impersonated. Web Api 1 --> Web Api 2, and Web Api 1 --> oData Service
This is not what we want. We want the oData Service to be accessible only via the Application Pool account. Hence we don't want to impersonate all outgoing calls from Web Api 1.
Programmatic Impersonation
We tried to impersonate only calls going from Web Api 1 to Web Api 2 using the following code
Disable Impersonation in Web.config
Impersonate calls from Web Api 1 to Web Api 2.
Results:
- Calls From Web Api 1 to oData are not impersonated (As expected)
- Calls from Web Api 1 to Web api 2 are not impersonated either. This is the problem.
Question:
- Is this how runtime impersonation should be implemented in Web Services?
- What are we doing wrong?
Any pointers would be helpful.
python - 使用 pymssql 的 Kerberos 委派(双跳)
该pymssql
模块声称支持 Kerberos 身份验证(和委托),但我似乎无法启用它。
我正在运行的客户端在 Windows 上。我需要通过反向数据库代理连接双跳。客户端、代理和数据库都是域的一部分。当我尝试连接 SQL Server Manager 时,我成功了。但是当我尝试连接pymssql
Python 中的模块时,它不起作用。如果我直接从客户端连接到数据库,我可以让 Kerberos 身份验证工作。但是同样,当我尝试通过代理时它失败了。
这使我相信 Kerberos 身份验证有效,但委派(双跳)无效。
根据关于 FreeTDS 的部分,我应该能够创建一个文件,C:/freetds.conf
它应该从那里读取连接信息。我似乎无法以任何有意义的方式验证这一点。此外,根据freetds 架构,我应该能够添加一个参数,该参数enable gssapi delegation
在启用时(默认关闭)允许 Kerberos 委派。
底线: 我希望在 Windows 上为 pymssql 启用 Kerberos 委派(以便双跳工作)。
目前我已经创建了一个文件C:/freetds.conf
并尝试了几种配置它的方法。
和
powershell - 如何让 Kerberos 授予我从 PSSession 访问文件共享的权限?
我想 Enter-PSSession 到服务器 A 并列出服务器 B 上共享的目录内容。
我希望通过在服务器 A 的 Active Directory 属性上设置 Kerberos 约束委派来启用对服务器 B 上的 cifs (SMB) 服务的 Kerberos 约束委派来做到这一点。但是,在我这样做之后,当我去列出目录内容时来自服务器 AI 上的 PSSession 的服务器 B 上的共享获得 PermissionDenied...
我也没有看到服务器 A 上的任何 Kerberos 流量表明它正在尝试获取服务器 B 的票证。
有人知道我在做什么错吗?
所有计算机都运行 Windows Server 2012 R2。
谢谢!
java - 如何使用独立的 Java 客户端将 WAFFLE 用于 SSO
我们正在尝试使用带有 JAAS 的独立 Java 客户端将 WAFFLE 用于 SSO。我们在 jaas.conf 中提到了 waffle.jaas.WindowsLoginModule,但它提示输入用户名和密码,我们认为这不是 SSO 的理想解决方案。有人可以建议如何避免这种情况吗?
仅供参考 - 我们没有使用任何网络/应用服务器。
authentication - WSO2 IS 使用 Radius / Kerberos 登录
下图显示了我需要部署的架构,它解释了我的问题。
我已经设计了一个子系统,其中包含部署在 apache tomcat 中的一组应用程序(Web 服务、Web 应用程序)。为了向我的子系统提供 SSO 功能,我使用了带有 SAML2.0 的 WSO2 Identity Server 来验证用户并获得对所有子系统应用程序的访问权限。
该子系统注定要集成到企业环境中,并与企业组件一起工作。现在我需要企业用户访问我的应用程序(子系统)有两种情况:
将 WSO2 Identity Server 连接到企业 LDAP,WSO2 IS 通过请求企业 LDAP 对用户进行身份验证。不建议这样做。
使 WSO2 IS 与企业认证服务器(Kerberos、Radius、CAS 等)一起工作,WSO2 : Brokred Authentication。
如何使用 Kerberos 自动向 wso2 IS 进行身份验证。从 kerberos 身份验证(或 Radius)获得的票证?
asp.net - Asp.net 委托
我正在制作一个通过调用 SQL 服务器获取数据的 .Net Web API。用户通过 Windows 身份验证 (Kerberos) 进行身份验证。我希望通过委托将用户凭据传递给 SQL 服务器,但 SQL 服务器看到的是匿名用户。
这就是我所做的:
IIS 应用程序:启用 Windows 身份验证和 asp.net 模拟。匿名和表单身份验证已禁用。启用内核模式身份验证已选中。提供者:协商,Kerberos。使用应用程序池凭据:True。
应用程序池:托管管道模式:经典。身份:网络服务。
在 AD 中,运行 Web 服务器的计算机设置为“信任此计算机以委托给任何特定服务(仅限 Kerberos)”
到 SQL 服务器的连接字符串包含 Integrated Security=SSPI;
编辑:在我的 web.config 我有
和
- 为机器设置了通用 HOST spn。
从浏览器中,我通过http://machinename.domain.net访问 Web 应用程序。
我希望在此设置中我的 IIS 应用程序在机器帐户下运行?
当我在 Web 服务器上的调试器中捕获请求时,我可以看到 WindowsIdentity.GetCurrent().Name 是浏览 Web 应用程序的用户的帐户,并且 WindowsIdentity.GetCurrent().AuthenticationType 设置为“Kerberos”。所以应该不错。
但是 WindowsIdentity.GetCurrent().ImpersonationLevel 仅设置为“Impersonate”。我本来希望它被设置为“代表”?
当我向 SQL 服务器发出请求时,我收到“用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败”,因此显然用户凭据没有传递给 SQL 服务器。
我希望有人能看到我做错了什么。我真的需要朝着正确的方向前进。
asp.net - IIS Windows 身份验证令牌传递给第二个服务器,失败 - Kerberos 双跳?
我们开发了一个自定义编译的 .net 4.0 dll 库,该库部署在标准 IIS 服务器上。该库由供应商创建的应用程序 Spotfire Web Player 使用,该应用程序在 IIS 服务器上自己的应用程序池中运行。该插件连接到另一个运行 tomcat 的服务器,以通过 Web 请求检索数据。为了发出这个请求,插件使用协商安全性生成一个身份验证令牌,将其转换为 base64 字符串,并传递给其他服务器以方便通过身份验证。在 IIS 的应用程序级别,Spotfire Web Player 应用程序被配置为使用 Windows 身份验证,进一步在 Windows 身份验证下的提供程序中,我们指定了协商:Kerberos 是唯一的身份验证方法,并且在高级设置中禁用内核模式身份验证(删除 NTLM 时需要)。这样做是为了克服我们认为可能是问题的 NTLM 双跳限制。应用程序池是标准的 .net 4.0 集成管道池,在系统 NetworkService 帐户下运行。
这里有几个场景向我们展示了安全问题或 IIS 配置干扰了正确的身份验证方法。
故障场景(双跳)
状态
• 服务器按上述方式运行,没有远程/交互式登录用户。
操作
• 远程笔记本电脑上的用户打开 Internet Explorer 浏览器并尝试打开将使用插件的文档。
结果
• 身份验证失败结果。
功能场景(单跳)
状态
• 服务器运行如上所述,管理员通过远程桌面登录
操作
• 管理员在服务器会话中打开 Internet Explorer 并继续打开将使用插件的文档
结果
• 身份验证成功。管理员凭据已成功传递到 Zema 服务器并经过身份验证。
功能场景(双跳)
状态
• 服务器如上所述运行,管理员通过远程桌面登录,并且管理员已成功打开使用插件并成功通过身份验证的文档(通过远程桌面中的 IE)。
操作
• 任何其他标准用户,从他们的笔记本电脑,在 chrome 或 IE 中,尝试打开将使用插件的文档
结果
• 所有用户都能够通过身份验证。仅在首先在服务器本身上打开文档之后。
功能场景(单跳)
状态
• 与上述 IIS 服务器不同,此插件也可用于在用户本地笔记本电脑上运行的客户端 .net 应用程序。IIS 使用与此桌面应用程序(Spotfire 分析软件)所使用的完全相同的 DLL 库。
操作
• 任何用户在使用插件的笔记本电脑上打开一个文档
结果
• 在这种情况下,用户笔记本电脑运行插件,生成身份验证令牌,并将其直接发送到 Zema 服务器。IIS 服务器根本不在图中。这种情况总是会导致成功的身份验证。
谢谢!