我们有一个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}`})
是的,可能是客户端方面的要求:
例如,对于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.
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
如果正确配置了操作系统和浏览器,则将触发服务票证生成,该浏览器将作为 授权 HTTP标头值发送。
编辑: 如果您的应用程序分为分别托管在不同主机上的前端和后端,则您必须为用户将要输入的前端主机注册SPN(并生成密钥表)。例:
For SSO to work, you have to register SPN: application.test.com, backend host name is irrelevant here. Command:
setspn -A HTTP/application.test.com@test.com ad_user_to_registern_spn_for