GVKun编程网logo

如何将Windows身份验证(浏览器)从React应用程序传递到Spnego Kerberos Spring SSO?

16

对于如何将Windows身份验证感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍浏览器从React应用程序传递到SpnegoKerberosSpringSSO?,并为您提供关于asp.net–W

对于如何将Windows身份验证感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍浏览器从React应用程序传递到Spnego Kerberos Spring SSO?,并为您提供关于asp.net – Windows 7中Safari 5.x的Windows身份验证问题、asp.net – 从表单身份验证转换为Windows身份验证、asp.net – 使用带有模拟的Windows身份验证的Web应用程序的IIS、asp.net – 在使用ASPNet Core的Linux上托管时的Windows身份验证的有用信息。

本文目录一览:

如何将Windows身份验证(浏览器)从React应用程序传递到Spnego Kerberos Spring SSO?

如何将Windows身份验证(浏览器)从React应用程序传递到Spnego Kerberos Spring SSO?

我们有一个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}`})

答案1

小编典典

是的,可能是客户端方面的要求:

  1. 用户登录操作系统的域帐号。
  2. 在浏览器中正确配置,请参阅Spring文档

例如,对于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

如果正确配置了操作系统和浏览器,则将触发服务票证生成,该浏览器将作为 授权 HTTP标头值发送。

编辑: 如果您的应用程序分为分别托管在不同主机上的前端和后端,则您必须为用户将要输入的前端主机注册SPN(并生成密钥表)。例:

  • 后端:api.test.com
  • 前端:application.test.com

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

asp.net – Windows 7中Safari 5.x的Windows身份验证问题

asp.net – Windows 7中Safari 5.x的Windows身份验证问题

我们在 Windows 7中遇到了Safari 5.x的问题,正如这个问题中所解释的那样,“ Postback is not working in Safari in Windows 7”我们认为这是一个ViewState问题,因为很多人以前遇到过这个问题.但在审查了太多来源之后,似乎Safari 5.x在Windows中的Windows身份验证方面存在一些问题,如这些链接中所述

Problems with Safari 5.1 in Asp.Net Windows Authentication
Problem using Windows authentication in Safari5.1
Safari 5.1 & Windows authentication broken with modal dialog

Safari 5.x是否存在Windows身份验证问题?如果是这样,如何解决?任何的想法?

解决方法

如果启用了协商提供程序,则在IIS下使用Windows身份验证时,Safari会出现问题.

怎么解决?
在IIS中,转到您网站的身份验证设置.右键单击Windows身份验证,选择提供程序并删除Negotiate,留下NTLM,这使得一切正常.

[参考文献]

> AJAX POST Request Only Works Once in Safari 5
维基百科上的> Negotiate Mechanism文章显示它未在Safari中实现

asp.net – 从表单身份验证转换为Windows身份验证

asp.net – 从表单身份验证转换为Windows身份验证

我们目前正在为我们的Intranet站点使用表单身份验证,并希望允许用户通过 Windows身份验证进行身份验证.这将如何影响当前用户帐户,配置文件和角色.我在网上看到,我可以混合使用两种身份验证类型,并将角色和配置文件放在一个单独的数据库中,但如何将现有角色和配置文件分配与Windows身份验证用户登录相关联?

解决方法

我不确定你是否可以完全按照你所要求的那样做,但是你可以编写你的方法,你可以编写需要经过Windows身份验证的人输入你已经拥有的凭证的功能,这是独一无二的(比如说如果他们通过单击链接进行响应,您可以以编程方式转换用户帐户.

您可以创建新帐户并从旧的非Windows身份验证帐户导入信息,然后删除旧帐户.但是,作为迁移的一部分,需要在此方法中更改依赖UserId的所有db记录.

asp.net – 使用带有模拟的Windows身份验证的Web应用程序的IIS

asp.net – 使用带有模拟的Windows身份验证的Web应用程序的IIS

我没有使用它,但这是一个有趣的问题.
如果我在IIS上设置Web应用程序以使用 Windows身份验证并模拟经过身份验证的用户和我的ConnectionString到sqlServer数据库使用Integrated Security = true;,我的应用程序在尝试连接到数据库时将使用应用程序验证的用户?

如果是的话,这是一件好事吗?
(该数据库具有LDAP / AD“域用户”权限.考虑一个可审计的数据库,其中每个用户都将记录您的操作.)

解决方法

是的,与sql Server的连接将在这些用户之下.

一般来说,这并不好.但这取决于具体情况.以下是需要考虑的主要因素:

>每个用户都需要自己的连接.即使使用连接池,也无法重用来自不同用户的连接.创建连接是相对昂贵的操作.每个连接都需要一点内存>每个用户都需要登录(或者至少是用户所属的Windows组需要登录).这可以是创建登录等的额外维护.另一方面,可以以不同的方式保护每个这样的登录.重要的是,如果使用单个帐户连接到sql Server,也可以实现为不同用户保护对象

asp.net – 在使用ASPNet Core的Linux上托管时的Windows身份验证

asp.net – 在使用ASPNet Core的Linux上托管时的Windows身份验证

我目前有一个自托管的Owin应用程序,它在 Windows上运行,如下所示:

public class Program
{
    private static void Main(string[] args)
    {
        using (WebApp.Start<Startup>("http://localhost:9000"))
        {
            Console.WriteLine("Press Enter to quit.");
            Console.ReadKey();
        }
    }
}

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var listener = (HttpListener) app.Properties["System.Net.HttpListener"];
        listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;

        app.UseNancy();
    }

当请求进入时,将使用其Windows域凭据验证用户.

对于ASPNetCore,我想知道是否有类似的设置可以使用但是应用程序在Linux上使用Kestrel Web服务器运行.

我听说Windows 2016和OpenIdConnect中间件可能有多种选择,或者我可以使用在Windows上运行的IdentityServer,但在Linux上使用应用程序,但我认为需要中间件,我也不清楚是否会有“认证舞蹈”暗示它可能不像我现在那样无缝.

任何建议和/或代码示例将不胜感激.

谢谢

解决方法

在任何平台上都没有直接支持Kestrel中的Windows auth,也没有任何可用的中间件支持Linux上的Windows身份验证.

通过Windows服务器路由登录请求是您唯一的选择. IdentityServer将是一个很好的起点. OpenIdConnect可能是您以最少的用户交互在两台服务器之间传递身份的最佳选择.

关于如何将Windows身份验证浏览器从React应用程序传递到Spnego Kerberos Spring SSO?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于asp.net – Windows 7中Safari 5.x的Windows身份验证问题、asp.net – 从表单身份验证转换为Windows身份验证、asp.net – 使用带有模拟的Windows身份验证的Web应用程序的IIS、asp.net – 在使用ASPNet Core的Linux上托管时的Windows身份验证的相关知识,请在本站寻找。

本文标签: