我的目标是让 Intranet 用户的凭据通过 asp.net 网页传递到 SAP RFC。
背景
我们在 AD 系统中设置了 SAP SSO。用户无需输入用户名/密码即可打开 SAP gui 并登录。
我们正在使用 ERPConnect 调用 SAP 中的 RFC。如果我们为连接字符串提供凭据,则效果很好。如果网页在我们的本地机器上运行,我们也可以使用下面的代码来使用 SSO 。
Dim db As New SAPContext("ashost=sapsandbox.xxxsap.ad.xxx.com snc_mode=1 sysnr=00 SNC_QOP=9 snc_partnername=p:SAPUserAccount@xxxSAP.AD.XXX.COM SNC_LIB=C:\windows\system32\gsskrb5.dll")
当我们移动到运行 IIS6 的 Windows 2003 服务器机器时,我们会收到以下错误。
SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=sapsandbox.xxxsap.ad.xxx.com, GWSERV=sapgw00, SYSNR=00
LOCATION CPIC (TCP/IP) on local host
ERROR GSS-API(maj): Miscellaneous Failure
GSS-API(min): Kerberos SSPI not usable with this User account
STOP! -- initial call to gss_indicate_mechs() failed
TIME Fri Sep 02 14:13:47 201
RELEASE 710
COMPONENT SNC (Secure Network Communication)
VERSION 5
RC -1
MODULE sncxxdl.c
LINE
我在我的 IIS6 站点上禁用了匿名访问。我还关注了这篇关于如何在 IIS6 上启用 kerberos 身份验证的文章。
有谁知道如何让这个工作?如果有更简单的方法让它与它一起工作,我们可以迁移到 IIS7。
编辑
我设置<identity impersonate="true" />
,我现在得到一个新的错误。
SAP_CMINIT3 : rc=20 > Connect to SAP gateway failed
Connect_PM GWHOST=sapsandbox.xxxsap.ad.xxx.com, GWSERV=sapgw00, SYSNR=00
LOCATION CPIC (TCP/IP) on local host
ERROR GSS-API(maj): Miscellaneous Failure
GSS-API(min): SSPI::AcqCredHdl(INI)==No credentials available
in secur
Could't acquire DEFAULT INITIATING credentials
TIME Tue Sep 06 11:45:11 201
RELEASE 710
COMPONENT SNC (Secure Network Communication)
VERSION 5
RC -4
MODULE snc
编辑
我想我必须有 AD 设置才能使用 SPN。这是我在这个问题上看到的。
在您的应用程序池帐户上为您的前端应用程序设置 SPN