当API配置为使用Windows身份验证时,从SQL Server调用Web API

当API配置为使用Windows身份验证时,从SQL Server调用Web API,sql,asp.net-web-api,ssis,windows-authentication,Sql,Asp.net Web Api,Ssis,Windows Authentication,我有一个用Windows身份验证保护的内部网站。这是正确的。 包含在该网站中,我有几个方法可以通过Web API访问 其目的是从SQL 2008 SSIS作业中自动调用这些API方法。这是我们的首选流程,因此所有计划任务都位于一个位置 当我从相应AD安全组中的用户的桌面调用Web API时,Web API调用工作正常,但当我尝试从SSIS作业调用API时,我收到一个访问错误。我已尝试将有效凭据放入SSIS作业中,但没有成功,我仍然收到相同的错误 此作业在什么安全上下文下运行?我是否可以将该安全上

我有一个用Windows身份验证保护的内部网站。这是正确的。 包含在该网站中,我有几个方法可以通过Web API访问

其目的是从SQL 2008 SSIS作业中自动调用这些API方法。这是我们的首选流程,因此所有计划任务都位于一个位置

当我从相应AD安全组中的用户的桌面调用Web API时,Web API调用工作正常,但当我尝试从SSIS作业调用API时,我收到一个访问错误。我已尝试将有效凭据放入SSIS作业中,但没有成功,我仍然收到相同的错误

此作业在什么安全上下文下运行?我是否可以将该安全上下文添加到广告组并使所有内容正常工作

不同身份验证过程下的Web API?这可以在web.Config中配置还是在页面本身上配置

****更新

我已经确认,我期望的帐户就是进行呼叫的帐户

关于返回的确切错误消息,我有更多详细信息:

SSIS package "XXManagerAdd.dtsx" starting.

Error: 0x1 at Trigger API: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.WebClient.OpenRead(Uri address)
   at ST_4b03489e84c44950b38aac6439e328ee.csproj.ScriptMain.Main()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
Task failed: Trigger API
SSIS package "XXManagerAdd.dtsx" finished: Success.

如果您已经创建了一个凭据并将其分配为运行作业步骤的实体,那么您的API调用将使用这些凭据。事实上,它是在用户帐户下工作的,而不是在工作中工作的,这让我相信那里的配置不正确。我们需要查看更多详细信息以提供具体的、可重复的结果我测试了SQL作业,方法是输入与从web浏览器(基本上是我的登录名)运行API时使用的完全相同的凭据
Dts.Events.FireInformation(0,“WhoAmI”,string.Format(“我是{0}”,System.Security.Principal.WindowsIdentity.GetCurrent().Name),string.Empty,0,true)将脚本任务添加到新包中,该代码将引发一个信息事件,事件名称为运行该包的标识。以您自己的身份运行一次,并通过具有证书的用户的sql代理作业运行一次。这将验证凭据是否真实呈现