Workday Studio - 向供应商 API 发出 HTTP 请求接收错误:未定义名为“http-token-auth”的 bean

Posted

技术标签:

【中文标题】Workday Studio - 向供应商 API 发出 HTTP 请求接收错误:未定义名为“http-token-auth”的 bean【英文标题】:Workday Studio - request with HTTP out to vendor API receiving error with: No bean named 'http-token-auth' is defined 【发布时间】:2018-08-23 03:11:52 【问题描述】:

我有一个 Workday Studio 集成,可以使用 HTTP 组件向供应商的 API 发送 GET 请求,但我收到以下错误。供应商没有用于连接的用户名/密码。我必须使用令牌进行连接。有谁知道如何从 Studio 进行这项工作以获取数据?

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为“http-token-auth”的bean

我以多种不同的方式发送请求:使用令牌对 URL 进行硬编码,使用令牌设置标头。以下是我的不同尝试。

我不确定这应该使用什么 Http 授权。没有用户名/密码,只有一个令牌和一个使用 CURL 发布的 URL。下面是带有 HTTP 属性的工作室的样子。

下面是 Header 上设置的内容。

另外,我可以使用 SoapUI 获取数据。下面是 SoapUI 中请求的片段。

以下是成功从 API 获取数据的 SoapUI 中的 JSON 原始请求。

非常感谢任何帮助!

谢谢你,-雷莫

【问题讨论】:

这似乎错误来自您的供应商 api。要求他们提供带有标头集的示例请求有效负载。他们在工作室尝试同样的方法。 【参考方案1】:

前言;我对 Workday Studio 不熟悉,而且似乎没有任何公共文档,因此这里可能存在一些细微差别,这个答案可能会遗漏。

总结

工作日、您的代码或可能正在使用的某些库正在引用不存在或找不到的 bean(请参阅 Spring 文档:Core Technologies)。

如果您没有在此处编写任何 Java 代码,那几乎可以肯定是 Workday Studio 中的配置问题或错误。以下是基于您提供的信息的一些观察。但首先,一个疯狂的猜测。

疯狂猜猜

Workday 的处理方式似乎与 cURL 或 SoapUI 略有不同。 cURL 和 SoapUI 正在执行以下操作:

使用参数向 URL 发送 GET 请求,并在标头中包含 API 密钥 服务器发送所需的响应

不过,Workday 听起来更像是:

发送 GET 请求,假设预授权场景,使用挑战类型:'token' 服务器使用其框架(可能是 Rails)用于令牌的正确身份验证类型进行响应; 'http-token-auth' Workday(错误地)假设服务器正在使用 Spring 框架,并尝试根据该响应加载正确的 auth-type bean Spring 框架失败,因为没有这样的 bean

我想有一些方法可以让 Workday 与标准 REST API 很好地配合使用,并且只需按照预期将 API 密钥提供给供应商的服务器,而不是尝试进行挑战/响应。

如果不是这样,下面还有一些杂草的可能性。

奇怪的 Bean 名称

错误中指定的bean名称是http-token-auth,是kebab-case。命名 bean 的约定是(较小的)camelCase,因此在任何指定的地方都可能使用了错误的大小写。

这可能在 Workday Studio 配置、XML 配置文件或您编写的一些自定义代码中(如果有)。

配置

如果 bean 名称正确,则可能存在其他配置问题。 Spring 可以通过扫描类路径(参见 Spring 文档:Classpath scanning and managed components)或从项目 XML 加载它来隐式检测候选组件。问题可能是:

构建路径错误(如果您不熟悉,请参阅this answer by esaj) 类路径错误,所以 Spring 看不到它。在这种情况下,这似乎是特定于 Workday 的配置。 bean 在项目 XML 中,但是是嵌套的。在这种情况下,它只能被封闭的 bean 访问。一种解决方案是激活相应的配置文件。 包装问题;如果 bean 未包含在生成的已部署 jar 中,则会出现问题。 This solution by dawrutowicz 应适用于多种情况。 项目配置;您的屏幕截图中的所有设置看起来都完全正确并且应该可以正常工作,因此您的项目设置中可能隐藏了一些内容

Workday Studio 中的错误

这似乎不太可能,但总是有可能的。如果您还没有编写任何 Java 代码,那么 Workday 代码中的某些东西正在提供这个意外的“http-token-auth”,或者不恰当地从其他地方接受它并尝试使用它加载一个 bean。

最后的想法

由于您正在尝试使用供应商的 API,我强烈建议您尝试与那里的一位工程师合作。保证,他们至少有一名工程师以前处理过复杂的集成问题。他们将提供有关其 API 的更多详细信息,并且可能能够就您可以共享的任何配置/代码为您提供更直接的输入。

【讨论】:

感谢 Rob 的详细解释。原来这是Workday中的一个错误。 -雷莫【参考方案2】:

在使用 Bearer 身份验证从 Workday Studio 向第三方 Web 服务发送 Rest POST 请求时,我报告了相同的错误消息。

解决方法是将标头输出类型设置为“消息”而不是“根部分”。这不是 Workday Studio 中的错误。

Workday Studio set header output type setting

问候, 设拉子

【讨论】:

以上是关于Workday Studio - 向供应商 API 发出 HTTP 请求接收错误:未定义名为“http-token-auth”的 bean的主要内容,如果未能解决你的问题,请参考以下文章

Workday Human Resources API - 请求服务版本无效

SAAS行业正在大整合,因为Salesforce, Oracle, SAP 和Workday的成功

我需要啥凭据才能通过 Api 连接到 Workday

使用 Workday API 编辑工作人员附加数据

Workday - SOAP API - Create_Requisition_Request SOAP 负载

Workday soap api - Get_Candidates 操作