在windows域外的应用服务器能否验证该域的用户?
我正在构建一个 Winform应用程序,其中包括应用程序服务器使用C#.它适用于我的公司客户,客户有自己的Windows域. 但是,应用服务器将不在其域中. 该应用将坐在云VM 中. 客户(像任何客户一样)希望使用户变得容易.他们想使用用户的Windows ID.他们不希望用户必须再次登录才能访问我的应用.只要用户是 Windows域组的一部分,他/她就应该可以访问该应用程序,而无需输入密码. 我想知道这是否可以完成,因为我的应用服务器是不是其域名的一部分. 如果是这样,如何? 解决方案 当然,有几个选项. 联邦 - 使用SAML/WS-FED或类似OpenID Connect的联邦协议.您的应用服务器接受基于内部用户身份的身份提供商的令牌. Active Directory提供ADF和Azure AD.还有其他出色的第三方服务可以做同样的事情. kerberos-使用 var authenticator = new KerberosAu
18 2024-04-26
编程技术问答社区
在C#的Oracle管理连接上的Kerberos
是否有一种方法可以使用管理数据访问? 来设置 kerberos 身份验证 我们有一个 c#应用程序,它连接到我们的Oracle数据库以获取/插入一些数据. 我必须在每个用户与Oracle数据库的连接上实现Kerberos身份验证. 之后我设法在DB上设置了Kerberos用户.其余步骤已经实现,因为大多数用户的PC都删除了Oracle客户端.但是,有些用户没有oracle客户端在其PC上掉落,因此我需要找到一种方法来以某种方式在App.Config中设置这些设置. sqlnet.ora文件: sqlnet.authentication_services =(kerberos5pre) sqlnet.kerberos5_cc_name = **** sqlnet.kerberos5_conf = **** sqlnet.kerberos5_conf_mit = true sqlnet.authentication_kerberos5_service = orac
8 2024-04-25
编程技术问答社区
SAP ODATA服务 - X-CSRF-TOKEN验证因客户端应用失败
这里有人对SAP ODATA服务的X-CSRF行为有很好的了解,尤其是与Windows Auth(Kerberos)身份验证一起使用时? 正在开发反对通过Postman测试的GET/PUT服务; X-CSRF token检索发生在put呼叫之前,并且在将令牌提交后(以及SAP Portal session的cookie)时接受了呼叫. . 测试服务在URL上的HTTPS上,例如: 尝试从.NET客户端应用程序进行尝试时,将呼叫的工作正常工作,包括令牌检索,但是尽管看似有效的令牌,但PUT返回了403'CSRF代币验证失败'错误. . 已经与提琴手一起追踪,并且请求/响应数据包看起来与Postman发送的内容相同.我看到的唯一区别是,客户应用在每个请求上都会收到一个不同的令牌,而Postman在连续的呼叫上收到相同的令牌.可能暗示会话未正确识别该应用程序? C#应用程序正在使用Windows Identity(DefaultCredentials),并首先命中S
34 2024-04-25
编程技术问答社区
Windows C#是否有方法使用父进程的Kerberos票证创建新进程?
我能够通过我在此处找到的代码通过CreateProcessususer创建一个新过程: 2004/10/28/createprocessasuser.aspx 它可以正常工作,但是新过程不包含IIS ASP.NET模仿的新用户的Kerberos票.我知道IIS有Kerberos票,我只是不知道如何从母公司工艺流程到我催生的新过程,以调用Openssh. . 编辑:@steve 提到的带有重复手的模拟块 var CurrentIdentity = ((WindowsIdentity)User.Identity).Token; IntPtr parentHandle = IntPtr.Zero; QuerySecurityContextToken(ref CurrentIdentity, out parentHandle); using (WindowsImpersonationContext
14 2024-04-24
编程技术问答社区
有什么方法可以使用Kerberos从Active Directory中获得所有用户?
我使用kerberos具有Linux上的KeyTab文件的Kerberos具有ASP.NET Core应用程序和身份验证方案. 我想从Active Directory与数据库中的用户同步用户列表,以具有一个相关的名字和姓氏值,如果从AD中删除其凭据,则没有人可以访问. 是否有任何方法可以通过Keytab文件或Kerberos进行操作? 解决方案 在Linux上使用ASP.NET Core进行kerberos如何?您正在使用什么库? 在任何情况下,您都有选择: 使用Kerberos票本身提供的详细信息.该票面包含用户名加PAC,其中包含一些信息,例如用户显示名称(不是首先和最后)以及组信息.参见有关细节. 使用Keytab中的Kerberos凭据,请从KDC请求LDAP票,并查询Active Directory以获取这些详细信息. 由于选项1并没有真正为您提供所需的一切,听起来好像选项2将更加有效.
18 2024-04-24
编程技术问答社区
从.Net应用程序(控制台)访问受Kerberos保护的webhdfs
由于Kerberos安全性,我无法从浏览器访问WebHDF.谁能帮我吗? 以下是浏览器中的错误,用于" http://ghyde "/weybey/webhdfs/v1/prod/snapshot_rpx/archive?op = listStatus&user.name = us = us" http错误401 问题访问/webhdfs/v1/prod/snapshot_rpx/archive.原因:需要身份验证 .NET代码,用于向此URL提出请求 HttpWebRequest http = (HttpWebRequest)WebRequest.Create(requestUri); http.Timeout = timeout; http.ContentType = contentType; string responseData = string.Empty; using (WebResponse response
14 2024-04-21
编程技术问答社区
窗口服务中的Kerberos认证
我是Kerberos身份验证的新手,对此一无所知.我已经准备好服务器名称,用户名和密码. 我需要从独立的Windows应用程序中验证用户.有人可以帮忙吗? 我在谷歌搜索时没有找到太多帮助. 感谢任何想法. 解决方案 在Kerberos中,您不是使用配对用户名/密码进行身份验证,而是通过附加Kerberos令牌,您可以从recredentialScache中获取. WebRequest WReq = WebRequest.Create (MyURI); WReq.Credentials = CredentialCache.DefaultCredentials; 请参阅: https:https://sdn. microsoft.com/en-us/library/yk7437c8%28v=vs.110%29.aspx 第二行将为您提供NTLM或Kerberos凭据.您将获得Kerberos凭据: 您的应用程序由域用户帐户启动 spn或upn
16 2024-04-19
编程技术问答社区
在没有SetSPN的情况下查询/改变Windows域的SPN
有人在Windows域上查询/更改SPN有任何运气吗? Google上的大多数热门歌曲与SQL有关:我找不到有关自己执行此操作的任何信息.最重要的事情是查询SPN配置并检查重复项. 根据Arnout,我制作了以下代码: static void Main(string[] args) { ValidateSPN("K2Server/jonathand-vpc:5252"); } static void ValidateSPN(string spn) { const string queryFormat = "(ServicePrincipalName={0})"; using (Domain localDomain = Domain.GetCurrentDomain()) { using (DirectorySearcher search = new DirectorySearcher(localDomain.GetDirectoryE
16 2024-04-16
编程技术问答社区
我如何在.NET中处理Negotiate?
我正在尝试在小型Web服务器中实现(至少是Kerberos部分)的谈判.我已经想出了如何让客户向我发送Kerberos谈判授权标题.我已经弄清楚了如何解码该数据(ASN.1).我不知道如何将其变成WindowsIdentity.我可以从我假设(如果我有自己的SspiWrapper),我会用SspiWrapper.AcquireDefaultCredential("Negotiate", CredentialUse.Inbound)做些事情来获取SSPI上下文,我可以使用该上下文来调用 AcceptSecurityContext/Negotiate ,然后使用 QuerySecurityContextToken QuerySecurityContextToken 以获取我可以创建WindowsIdentity的令牌. 但KerberosReceiverSecurityToken使它看起来像一个非常复杂的过程.而且,没有任何了解如何做到这一点或授权标题有效载荷的哪一部分,我可能可以在不
16 2024-04-16
编程技术问答社区
我如何设置.NET WindowsAuthentication-名称总是显示为 "IIS APPPOOL/Classic .NET AppPool",而我希望它使用实际的用户。
我正在使用以下代码通过Kerberos进行身份验证. IntPtr logonToken = WindowsIdentity.GetCurrent().Token; string authenticationType = "WindowsAuthentication"; WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken, authenticationType); //windowsIdentity.Name == equals "IIS APPPOOL\Classic .NET AppPool" when I want it to be the user 这仅在我尝试运行.NET应用程序的Web服务器时才发生.如果我在计算机上本地运行代码进行调试,它将在名称属性中显示我的用户ID.关于如何在Web服务器上工作的任何建议? 解决方案 您需要在web.config中启用Pimpersonica
58 2024-04-15
编程技术问答社区
如何使用SSPI从Kerberos获得服务令牌
目标: 我正在尝试构建概念客户端应用程序,以通过使用SSPI来实现单个登录.我是C#的新手,我感到困惑. 到目前为止我所知道的和所做的事情: 所有用户都是Active Directory域的一部分,因此我知道Kerberos在登录过程中被用于身份验证.目前,我需要做的就是从kerberos获取服务令牌,以便我可以将其传递给服务资源,而不是用户名和密码(如果我错了,请纠正我).我已提供了已在Kerberos注册的服务的服务原理名称(SPN)和密码. 我希望不使用平台调用服务来调用SSPI函数,但是如果需要的话,我会.我读了" .NET远程身份验证和授权样本 - 第一部分",并使用 Micrososoft .samples.security.sspi 用于测试.我还尝试使用 c#/.网络接口到Win32 SSPI身份验证API . 到目前为止,我可以获得用户/客户端凭据,构建客户端安全上下文.但是如何要求给定SPN的服务票? 我将感谢您的帮助和指导.如果可以的话,请具
34 2024-04-12
编程技术问答社区
如何正确使用gss_import_name?
我使用GSS_C_NT_HOSTBASED_SERVICE在客户端使用GSS_IMPORT_NAME来获取诸如Service/server-host@roealm之类的校长. 我这样称呼, gss_import_name(状态,"服务", gss_c_hostbased_service,output_name); ,但是我得到了校长,例如服务/local-machine@realm.从"人"页面中,我在内部学习了它使用krb5_sname_to_principal来获取主机名,如果null为localhost名称.现在,我的问题是如何将正确的主机名(服务器主机)传递给GSS-API以创建主体? 解决方案 我忽略了它.要以"服务/服务器 - 宿主@realm"形式获得委托人 我应该打电话 gss_import_name(状态, "服务@server-host", gss_c_hostbased_service,output_name); 而不是
22 2024-04-09
编程技术问答社区
npm安装mongoose失败(kerberos和bson错误)。
因此,我正在尝试启动节点应用程序,但是我的MongoDB安装会出现一些错误. 这是我开发环境的规格: node => 0.10.33 (从nodejs.org安装) npm => 1.4.28 (从nodejs.org安装) git => 2.1.3 (自制) mongodb => 2.6.5 (自制) 如果有所作为,我还将使用含义堆栈骨架作为教程的一部分. 简而言之,当我尝试使用$ node app.js运行节点应用时,我会得到以下反馈: USER$ npm install mongoose > kerberos@0.0.4 install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos > (node-gyp rebuild 2> builderror.log) || (exit 0) CXX(target) Relea
18 2024-04-04
编程技术问答社区
启用kerberos后,historyserver无法读取日志
我在群集上启用kerberos,它工作正常.但是由于某些问题,MAPRED REDRED用户无法通过Jobhistory Server读取和显示日志.我检查工作历史服务器的日志,并给出访问错误,为: org.apache.hadoop.security.AccessControlException: Permission denied:user=mapred, access=READ_EXECUTE, inode="/user/history/done_intermediate/prakul":prakul:hadoop:drwxrwx--- 我们可以看到目录可以访问Hadoop组,并且MAPRED在Hadoop组中,即使那时也无法读取日志.类似的错误,它给出了/tmp/logs/文件夹,因此在资源管理器UI上没有显示日志. 我在所有机器上都包含MAPRED用户的机器上验证: [cloudera]# id mapred uid=491(mapred) gid=489
18 2024-03-30
编程技术问答社区
我如何(在shell中)检查我是否有一个特定服务的有效Kerberos ticket?
我希望能够检查(在我的bash脚本中)是否有有效的特定服务票证.如果我执行klist,我可以手动获取此信息,但是通过编程分析到期时间,服务原理等,这将有所工作.谢谢. 解决方案 尝试klist -s,如果您有有效的股票,则应返回0的状态代码,或者1(如果不是).然后,您可以通过查看$?来对其进行测试.例如: if ! klist -s then echo "kerberos ticket not valid; please run kinit" exit 1 fi 其他解决方案 klist if ! klist 2> /dev/null | grep -q 'Principal: @' then echo "Error: a Kerberos ticket for @ is needed." exit 1 fi 2> /dev/null丢弃
16 2024-03-28
编程技术问答社区
Bash,执行命令,但继续进行交互式会话
我想为pagsh创建一个别名,这会立即让我获得管理员Kerberos票. 问题是我无法弄清楚如何为要运行的bash指定命令,但是在完成命令后仍继续进行交互式会话. 我目前的镜头是: alias admin=pagsh -c "bash -c \"kinit xtoth1@ADMIN.META\"" 但bash在完成kinit之后逻辑上结束.如何将自定义命令推入bash交互式会话的乞讨?我仍然需要正常运行.bashrc,因此我不能使用--rcfile 解决方案 我的建议将使用--rcfile的自定义BASHRC文件来源,以供您.bashrc,ex: alias admin=pagsh -c "bash --rcfile myrc" myrc : source ~/.bashrc kinit xtoth1@ADMIN.META 其他解决方案 如果您需要的只是一两行,则可以使用"过程替换"的酷bash功能[1]在调用线上直接提供它.例如(要
22 2024-03-28
编程技术问答社区
用Kerberos Ktutil脚本制作密钥标签
我想制作一个脚本,该脚本将使用ktutil生成akeTab.运行脚本时我想使用 [用户] $ script.sh密码 #script.sh echo "addent -password -p PRINCIPAL -k 1 -e aes256-cts-hmac-sha1-96" | ktutil ktutil比需要密码,在这里我想从上面使用密码参数.我将如何通过密码争论? 解决方案 with gnu bash: user="PRINCIPAL" pass="topsecret" printf "%b" "addent -password -p $user -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nwrite_kt $user.keytab" | ktutil printf "%b" "read_kt $user.keytab\nlist" | ktutil 输出: slot KVNO Principal ----
14 2024-03-28
编程技术问答社区
Azure VM中的WASB是否支持Kerberos认证?
我已经创建了Linux Azure VM并在其上运行Java应用程序.然后,我创建了HDinsight Spark群集,该群集具有HDFS,纱线,Spark等. 我使用core-site.xml中的存储访问键连接了VM. . core-site.xml fs.azure.account.key.YOUR_ACCOUNT.blob.core.windows.net Storage_Access_Key ,我可以使用上述应用程序来验证我的应用程序.但是我想在Azure Blob存储中使用Kerberos在Azure VM上使用Kerberos进行身份验证. 是否有任何可能的选项和文档?请帮助我 解决方案 首先,请确保为HDInsight配置了Kerberos身份验证. If not sure, please refer to the hortonwo
22 2024-03-24
编程技术问答社区
如果你可以通过ldap进行认证和授权,为什么还要使用kerberos?
我们正在争论在我们拥有的大数据集群中使用Kerberos.我们的管理员希望使用LDAP进行身份验证和授权.我抬头看着互联网,收到了不同的回应,但是对于使用Kerberos的原因,没有明确的理解. 我知道您可以将Kerberos与LDAP一起使用,但我没有清楚地了解使用Kerbors + LDAP与Just LDAP的好处.有人可以解释吗? 解决方案 Kerberos是公司内部网络行业标准单签名协议. LDAP始终更像是目录查找协议.但是,LDAP也可以进行身份​​验证,因为该协议本身的几年后,其身份验证方面被螺栓固定.使用LDAP身份验证,并且每次身份验证尝试都会在目录身份验证服务器上造成负载,因此从某种意义上说,它可以经常锤击您的目录身份验证服务器.使用Kerberos,在第一个身份验证之后,客户端将持有默认值10个小时的机票,因此其他身份验证尝试不必再次超载您的目录身份验证服务器.客户端将注意将身份验证"票务"用于目标资源,而不是代表客户端执行此操作的服务器,这是如果L
12 2024-03-20
编程技术问答社区
在Java 6上运行的JMX客户端/服务器上支持Kerberos认证/授权
我有我的JMX服务器,该服务器会注册bean从本地文件读取,并根据需要将其提供给其他JMX客户端. 可以使用" JConsole"或通过Tomcat容器下运行的Java应用程序访问服务器. 我想要的是添加身份验证,以防止访问JMX服务器的"未知"身份.为此,我使用以下JVM选项添加了Kerberos Authentication @ Server -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=5555 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Djava.security.auth.login.config=./conf/jaas.conf -Djava.security.krb5.conf=./conf/krb5.conf -Dcom.su
16 2024-03-20
编程技术问答社区