- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在现有的网络应用程序上启用 Windows Identity Foundation。
我想尽可能少地扰乱现有代码,所以我想登录页面使用应用程序中留下的 formsauthentication,如果用户通过特定页面进入应用程序,我只连接 STS,例如“im_comming_from_some_other_site .aspx”。
在“im_comming_from_some_other_site.aspx”中,代码如下:
Page_Load(...)
{
if(verifyAgainstSTS()
{
FormsAuthentication.SetAuthCookie(<some_STS_Userid), ...)
Response.Redirect("default.aspx")
}
else
{
Response.Redirect("http://<STS_server_name/<STS_service...etc>")
}
}
是否有人知道这是否可以完成以及如何完成?非常感谢任何指向示例代码的链接(如果可用)。
(当然需要一些代码来确定当认证超时时要做什么;要么转到本地登录页面,要么转到STS-登录页面)
我知道这似乎是一个糟糕的设计,不能完全使用 STS,但我需要尽快实现它,并且我希望尽可能保持原始站点不变。
最佳答案
这不是一个糟糕的设计,这是您的要求,您会努力实现它。我们有这样构建的工作系统,这不是火箭科学。唯一的区别是我们将它静态地(通过全局设置)而不是动态地切换到 forms/sam。
无论如何,您在 web.config
中保留表单例份验证,这样当当前用户没有授权时,表单会将请求重定向到登录页面。
在登录页面中,您有两个选项。以某种方式创建表单 cookie。另一个选项涉及 WIF 的 FederatedPassiveSignIn
控件。
如果用户遵循表单例份验证,则设置 cookie,您就完成了。如果用户遵循 STS 登录控制,他/她迟早会返回有效的 SAML token 。 FederatedPassiveSignIn
将自动获取它,您只需在 SignedIn
事件中处理重定向。
您甚至不需要您在问题中提到的 if
。
我记得有一个警告。当用户通过 STS 身份验证时,将创建 WS-Federation cookie,您可以读取声明等。一切正常。
但是,如果用户通过表单进行身份验证,则 SAM (SessionAuthenticationModule) 将根据每个请求在 ASP.NET 管道中用 WS-Federation cookie 替换表单 cookie(我猜这是因为 SAM 稍后位于表单的管道中认证模块)。
这不会破坏您的 context.User.Identity.IsInRole(...)
授权也能正常工作,因为 SAM 会将用户角色复制到相应的声明中。
但是,如果您在代码中的任何地方尝试直接从表单 cookie 中提取信息(而不是使用通用 API),您可能会发现表单 cookie 不存在,即使用户通过表单进行了身份验证第一名(cookie 不存在,因为它将被 WS-Federation cookie 取代)。
关于c# - 设置STS但在webapp中保留formauthentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623136/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 8 年前。
我正在使用 Spring Source Toolsuite IDE 处理 Struts 项目。 当出现编译器错误或其他问题时,我的项目图标上方会出现红色 X 标记或黄色感叹号。 但即使在我确定没有编译
我用的是 AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(), 并且自动设置默认区域(全局)。
我用的是 AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(), 并且自动设置默认区域(全局)。
在较新版本的STS 3.6.0及更高版本中,不再有关闭Spring Dashboard的选项,现在有人知道如何实现这一点吗? 最佳答案 您是否尝试过仅关闭仪表板,然后在重新启动 STS 时查看它是否保
我正在使用最新版本的 SpringSource Tool Suite (STS)。我已经建立了一个Java项目。我的代码有一个打包 WAR 的 Ant 构建文件。我在 Mac 10.6.3 上本地安装
这是我的文件“sts.ini”,我进行了配置,但它仍然运行得很慢。谁能帮帮我? --launcher.XXMaxPermSize 4096M -vmargs -Dosgi.requiredJavaVe
我已在 Mac (10.12.1) 上下载并安装了 STS 3.8.2。每次启动 STS.app 文件时,它都会在隐藏的 .eclipse 文件夹下创建一个新的 org.springsource.st
我正在使用 cloudformation 模板创建两个资源 AWS Lambda 函数和角色。 我使用角色 arn 作为环境变量。稍后在 S3 连接的代码中使用它。但出现异常 com.amazonaw
我正在尝试将Gradle评估为我将来的一些项目的下一代构建工具。 到目前为止,我已完成以下步骤: 我的机器上安装了Java 7。 已安装Gradle 2.0 安装了Spring Tool Suite
我基本上有两个问题: 有没有办法从 Eclipse 调用 Maven 控制台? (我可以在其中编写 eclipse:eclipse,然后它开始构建 eclipse 项目) STS在哪里解压它的mave
我的项目资源管理器中有多个项目,所以刚才我开始处理一个应用程序,但我并没有所有其他应用程序都损坏了。 我不知道原因。 我知道我可以从工作区导入项目,但是寻找不同的方式会导致它发生在我身上很多次。 如何
我继承了一个Grails项目,对Grails和Eclipse来说是一个新手。我在STS 2.6.1中有该项目。每次保存文件时,项目都会从头开始进行完整的编译。我没有选中项目->自动生成。有任何想法吗?
我有以下情况: 我有一个域,必须从中删除一个域,但是在几个不同的位置引用了该域,并且grails在编译过程中未捕获此错误。 STS IDE确实强调了这些字段,但是扫掠整个应用程序以查找这些标记的错误是
我安装了 Spring Toolsuite。 我转到新建 -> 导入入门项目。 我选择“构建 RESTful Web 服务”。仅下载“完整”项目,选择 maven,而不打开站点。 现在我到底需要做什么
想知道在使用签名和加密 token 的负载平衡环境中部署自定义 WCF - 安全 token 服务 (STS) 的最佳实践是什么? 我们使用 Cirtix NetScaler 来处理负载平衡和 SSL
有什么方法可以让 Springsourcetoolsuite 版本带有自定义的和已经预装的插件吗?我只是想已经安装了一些插件,这样我就不必每次切换到新机器或类似的东西时都手动进行。这对我来说会更方便一
当我在 STS(spring 工具套件)工作区中导入现有项目时,我遇到了这个问题。以下是我的项目的示例文件夹结构: 现在dao文件夹里有很少的java类,utils文件夹里有很少的java类。当尝试从
我刚刚开始使用 Boot Dashboard 来管理我所有的 Spring Boot 应用程序 ( Boot Dashboard )。 问题是我看不到应用程序的起始端口: 应用程序启动没有任何问题:
在 Spring STS 中遇到以下情况:在定义新服务器的过程中,服务器名称未填充,我无法单击“下一步”。在此之前,我选择了 Tomcat v7.0 Server,同时希望获得最新的 Tomcat 服
我是一名优秀的程序员,十分优秀!