带有反应的 Kerberos 身份验证

Posted

技术标签:

【中文标题】带有反应的 Kerberos 身份验证【英文标题】:Kerberos authentication with react 【发布时间】:2018-07-06 15:57:05 【问题描述】:

我有一个 react 应用,它使用 axios 向我们的 REST API 服务器发出请求。

在 REST 服务器上,我们使用 kerberos 添加了身份验证。当我们简单地使用 chrome 向该服务器发出请求时,该身份验证工作正常(chrome 使用 kerberos 的票证数据传递正确的标头),但是当 react 应用程序发出请求时,票证不会添加到请求中。

我们如何访问票证并通过 react 应用发送?

注意:react 应用程序由 apache 服务器作为静态内容提供,并与不同的 REST 服务器通信。

【问题讨论】:

【参考方案1】:

您应该直接使用 fetch API,而不是 axios。

我在这个项目上使用 React 做了一个 NTLM/Kerberos SSO 示例。 项目:https://github.com/jlguenego/react-sso-example

【讨论】:

【参考方案2】:

如果您已经拥有票证,您可以在请求标头“Authorization”中将其传递给值为“Negotiate”。

对于访问票证,我不清楚您的反应应用程序处于哪种状态,您以哪种形式集成了 keberos 或您希望如何获得票证。例如,如果您想从用户的浏览器中获取它,您可以使用标题“WWW-Authenticate”值“NEGOTIATE”和状态 401 进行响应,如果浏览器配置正确,它将处理它并返回票证。如果您希望自己的服务用户使用它,您可以使用 npm kerberos 并通过 kerberosClient 获取票证。

【讨论】:

以上是关于带有反应的 Kerberos 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

带有Kerberos的PyHive在几次调用后引发身份验证错误

Hadoop 集群上的 Kerberos 身份验证

IIS 7 中的 Kerberos 身份验证

SSL 和 Kerberos 身份验证之间的区别?

Apache shiro + kerberos 身份验证

使用 Kerberos 进行 Android 身份验证