我们有一个React应用程序,用于从Spring Boot Web服务获取数据。两者都部署在同一服务器(tomcat)中。但是我们只需要Kerberos身份验证即可从React应用程序进行Web服务调用。任何人都可以打开React应用程序,但是当它导航时,它将调用Webservcie获取数据。因此,如果我们将spring配置为支持spnego kerberos spring sso,浏览器是否有可能将登录的Windows凭据自动(从React应用程序运行,在浏览器上运行)传递给spring boot Web服务。
我们正在从React App调用服务,如下所示-
export const client = rest
.wrap(mime, { registry: registry })
.wrap(errorCode)
.wrap(defaultRequest, {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
method: 'GET'
})
export const fetchPDSIs = (Id) =>
APIHelpers.client(APIHelpers.buildPDSIReq(Id))
.then(
response => (response.entity || []).sort((a, b) => a.portalinstance.localeCompare(b.portalinstance))
,
response => {
global.msg.error(<div className='smallTextNotification'>`Fetching instances and portal for {Id} error: {response.status.code} -> {response.status.text}</div>)
return []
}
)
export const buildPDSIReq = (Id) => ({path: `${serverAddr}/msd232/pdsiii/${Id}`})
答案 0 :(得分:2)
使用提取API,它通过添加凭据'include'对我有用
fetch(${authBase}/auth
,{凭据:'include'})
我知道这不是您正在使用的内容,但可能会帮助其他读者
答案 1 :(得分:0)
是的,可能是客户端的要求:
例如对于Internet Explorer:
E.3 Internet Explorer
完成以下步骤以确保您的Internet Explorer浏览器 已启用以执行Spnego身份验证。
Open Internet Explorer. Click Tools > Intenet Options > Security tab. In Local intranet section make sure your server is trusted by i.e. adding it into a list.
Kerberos身份验证由后端服务返回的HTTP标头触发:
WWW-Authenticate: Negotiate
如果操作系统和浏览器配置正确,将触发服务票证生成,该浏览器将以 Authorization HTTP标头值发送。