如何从 Windows Azure Active Directory 身份验证的 oauth2.0 身份验证中注销

2024-03-03

我们使用 oauth 2.0 进行 Windows Azure Active Directory 身份验证,其中执行身份验证……身份验证成功后,我们将重定向到我们的网站。 为了注销网站,我们删除了网站上生成的所有 cookie,并再次重定向到 login.microsoftonline.com/login.srf?wa=wsignin1.0&wtrealm=....... url,但此时我们没有收到任何登录凭据屏幕以及 使用访问令牌重定向到我们的网站。注销需要什么流程。因为如果我们删除所有 cookie 或关闭浏览器并重新打开网站,就会将我们重定向到 login.microsoftonline.com/login.srf?wa=wsignin1.0&wtrealm=........ url。

我们使用以下代码进行注销过程

    [NoCacheAttribute]
    public ActionResult LogOut()
    {
   UserCookieWrapper.delete_UserCookieWrapper();
     //This function delete all the datamemeber of the UserCookieWrapper class                             

     string[] theCookies =   
    System.IO.Directory.GetFiles(Environment.GetFolderPath(
    Environment.SpecialFolder.Cookies));
        foreach(string currentFile in theCookies)
        {
           try
           {
              System.IO.File.Delete(currentFile);
           }
           catch(Exception objEx) { }

        }                    
        Response.Clear();
       return RedirectToAction("Index", "Login"); 
       }

清除你创建的 cookie 对你没有帮助,因为用户仍然使用 Azure AD 登录。这就是 Web-SSO(单点登录)的工作原理。无论使用哪种协议对 Azure AD 进行身份验证,您仍然需要正确实施注销 - 联合注销!情况就是这样any您可以在互联网上找到 Web-SSO 提供商 - Google、Facebook、LinkedIn、Twitter,凡是您能想到的。

您所做的只是将用户从您的应用程序中注销,而不是从身份提供商处注销。一旦您的应用程序将用户重定向到选定的身份提供商(在您的情况下是 AAD),如果用户与其有活动会话,则将看不到登录屏幕!

为了正确实施联合注销,您必须仔细阅读使用 Azure Active Directory 实施 SSO http://msdn.microsoft.com/en-us/library/windowsazure/dn151790.aspx。您可以快进到“实现注销控制器”步骤。这将显示这样的代码:

public void SignOut()
{
     WsFederationConfiguration fc = 
            FederatedAuthentication.FederationConfiguration.WsFederationConfiguration;

     string request = System.Web.HttpContext.Current.Request.Url.ToString();
     string wreply = request.Substring(0, request.Length - 7);

     SignOutRequestMessage soMessage = 
                     new SignOutRequestMessage(new Uri(fc.Issuer), wreply);
     soMessage.SetParameter("wtrealm", fc.Realm);

     FederatedAuthentication.SessionAuthenticationModule.SignOut();
     Response.Redirect(soMessage.WriteQueryString());
} 

请通读整个部分(更好是整篇文章)以了解代码的作用以及为什么必须这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Windows Azure Active Directory 身份验证的 oauth2.0 身份验证中注销 的相关文章

  • Azure DevOps 管道构建工件中缺少 Gulp 编译的 CSS 文件夹

    一点背景 我有一个小型 dotnet 核心应用程序 该应用程序托管在 Azure 上 并且正在使用 Azure DevOps Pipelines 进行构建和部署 在我们开始使用 DevOps Pipelines 之前 CI 直接连接到 Az
  • Get-AzureStorageBlob 抛出找不到您的 azure 存储凭据

    我刚刚开始使用 Azure 在使用 PowerShell cmdlet 处理我的存储帐户时遇到问题 我已经创建了一个存储帐户并在该存储帐户中创建了一个容器 接下来 我安装了 Azure Powershell SDK 和命令让等 并导入了pu
  • Azure Policy:删除资源组上的锁定

    我尝试使用 Azure Policy 检查生产订阅中的所有资源组是否都有 CanNotDelete 锁 我制定了一项政策 其灵感来自于这个问题 https stackoverflow com questions 54883610 how t
  • 如何使用postman调用REST API进行azure文件存储?

    我想通过postman调用azure的文件存储相关的REST API 以下是我提出请求的方式 我正在请求列出文件存储帐户中的所有共享 如下所述 https learn microsoft com en us rest api storage
  • Android 设备上的 Facebook 分享问题

    我使用了来自的样本AndroidFacebook示例 https github com ddewaele AndroidFacebookSample它在模拟器上运行良好 但在设备上它被转移到内置的 Facebook 意图 设备上不会出现身份
  • 在流量管理器和 Web 应用程序上配置自定义域

    我推荐了这个微软文档 但它很令人困惑 https learn microsoft com en us azure app service web sites traffic manager custom domain name https
  • 不能为实体类型指定过滤表达式。过滤器只能应用于层次结构中的根实体类型

    我在添加新迁移时遇到此错误 无法为实体类型 Babysitter 指定筛选表达式 e gt Not e IsDeleted 过滤器只能应用于层次结构中的根实体类型 我正在做的是 我有 2 个类 Babysitter 和 Parent 它们都
  • PHP登录然后重定向

    我使用以下代码将用户登录到一系列安全页面 我需要将每个用户在提交后重定向到适当的页面 我想知道需要采取哪些步骤来选出三个登录级别 管理员 特殊 用户 if isset SESSION username function check logi
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 云到设备 Azure IoT REST API

    我探索了如何使用 Azure REST API 将数据从设备发送到云 它运行无缝 没有任何问题 我没有找到有关使用 Azure IoT Hub REST API 向 Arduino 板发送云到设备消息的好文章 有人可以就此提供建议吗 您还可
  • 当后端托管在 Azure 上时,create-react-app 代理请求失败并显示 404

    我在设置 create react app 应用程序来代理对 Microsoft azure 上的测试托管的请求时遇到了一些麻烦 我在应用程序的 package json 中设置了代理 如下所示 proxy api target https
  • 如何将身份验证详细信息传递给 iframe 内的应用程序?

    我有一个网页 想在其中显示詹金斯的网页 因此使用iframe like But http xxx xxx xx xx 8080 view Nightly 20Builds 20 打开登录页面 因此无法直接显示内容 其实我想在没有登录的情况下
  • 如何向 Azure SQL 的 ASP.NET 成员资格提供程序添加重试逻辑?

    我们在 Azure SQL 数据库上有一个基于 ASP net sqlMembershipProvider 的用户数据库 很明显 开箱即用的 sqlMembershipProvider 4 0 不具备 Azure SQL 连接所需的重试逻辑
  • System.Security.Claims 命名空间的成员不可用?

    我正在学习 NET 4 5 中新的基于声明的身份验证方法 并使用控制台应用程序来执行此操作 根据 MSDNhere http msdn microsoft com en us library system security claims c
  • Azure Durable编排功能ILogger输出两次日志

    有几个相互调用的持久函数 主编排 gt 子编排 gt Activity gt Helper 异步方法 每个函数都有 ILogger 依赖性 并在函数开始和函数结束时登录 由于某种原因 两个协调器都会重复 启动时 消息 见图 活动没有这种效果
  • 如何使用多个Auth组件?

    我使用用户模型将身份验证组件配置为 管理页面 但现在 我还想为客户端创建 配置身份验证 我尝试 重写 inialize This is in my ClientsController php public function initiali
  • 配置 AKS 负载均衡器以进行 HTTPS 访问

    我正在将最初为 AWS Fargate 容器服务开发的应用程序移植到 Azure 下的 AKS 在 AWS 实现中 创建了一个应用程序负载均衡器并将其放置在 UI 微服务前面 该负载均衡器配置为使用签名证书 允许 https 访问我们的后端
  • 在 Express 中设置客户端可访问 Cookie

    我正在开发一个使用 Express 和 SocketIO 的 Node 应用程序 我想在我的 Express 控制器中设置一个 cookie 然后可以从我的客户端 Javascript 代码访问该 cookie 我尝试的一切似乎都不起作用
  • 如何使用 ServiceStack 作为 OAuth2.0 的资源服务器来构建安全的 api?

    我已经使用构建了 OAuth2 0 授权服务器点网开放验证 https github com AArnott dotnetopenid它将管理身份验证 授权并将 accessToken 分配给调用者 调用者将使用访问令牌访问资源服务器上的
  • Django Azure AD 集成

    我目前正在使用 Azure AD 将 SSO 集成到 Django 项目中 我目前正在使用该包 https github com leibowitz django azure ad auth https github com leibowi

随机推荐

  • git-svn 可以像本地 subversion 客户端一样处理 CRLF 吗?

    我有一个托管在 Linux 上的 Subversion 存储库 但只能通过 Windows 客户端访问 因为它是大型 Windows 应用程序的源代码 如果我可以使用 git svn 由 msysgit 提供 处理这个存储库 那就太棒了 我
  • 在同一位置绘制顶点

    有没有一种方法可以在同一位置绘制两个图的共享节点 例如 两张图 g1 graph ring 5 V g1 name c node1 node2 node3 node4 node5 g1 g1 V g1 1 g2 graph ring 5 V
  • 更有效地编写 HTTP 脚本

    很多时候我想自动化 http 查询 我目前使用 Java 和 commons http 客户端 但可能更喜欢基于脚本的方法 事情真的又快又简单 我可以在其中设置标头 转到页面 而不必担心设置整个 OO 生命周期 设置每个标头 调用 html
  • GWT 2.4.0 RequestFactory 多态性

    GWT 2 4是否支持这种情况 Entity class MyBase Entity class MyChild1 extends MyBase Entity class MyChild2 extends MyBase ProxyFor M
  • 如何在 Remix.run 开发模式下使用内存缓存?

    我需要从一个非常慢且很少变化的 API 获取数据 所以我想我应该使用内存缓存 我首先尝试了一种非常简单的方法 只需将其保存到路径中加载器函数范围之外的变量中 let cache export const loader async gt if
  • 将两个集合与范围条件组合起来

    我有一个集合 产品 其中包含如下文档 id 142347106 name product 1 id 135377126 name product 2 我还有另一个系列 价格 id ObjectId 59310a6bad6e99863c2a6
  • MySQL 与实体框架 6

    我一直在尝试为我的 MySQL 服务器添加 EF 模型 但没有机会 因为它要么在为我的项目选择实体框架版本之前关闭 要么给出 您的项目引用了最新版本的实体框架 但是 无法为您的数据连接找到与此版本兼容的实体数据库提供程序 错误 并且我无法为
  • 针对 Python Web 开发的 TDD 资源 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我不是一名黑客 也不是一名全职程序员 但我希望开始我自己的完整应用程序开发实验 如果我在这里错过了一些简
  • 从 io.Reader 到 Go 中的字符串

    我有一个io ReadCloser对象 来自http Response目的 将整个流转换为最有效的方法是什么string object EDIT 从 1 10 开始 strings Builder 就存在了 例子 buf new strin
  • 如何在测试 FastAPI 应用程序时触发生命周期启动和关闭?

    作为 FastAPI 的新手 我正在努力测试比我在教程中看到的稍微困难的代码 我用fastapi cache模块和Redis是这样的 from fastapi import Depends FastAPI Query Request fro
  • 如何仅在Android移动设备中而不是在数据库中获取macid和手机号码

    如何仅在Android移动设备中而不是在数据库中获取macid和手机号码 try this WifiManager manager WifiManager getSystemService Context WIFI SERVICE Wifi
  • queryselectorAll - 查找具有多个匹配类的元素

    使用 JS queryselectorall 方法可以选择具有 2 个匹配类的特定标记名称的元素 例如 我有一个元素 a class classOne classTwo a 使用 queryselectorall 我可以选择一个类名 doc
  • Java 9 中的 require 和 require 传递语句有什么区别?

    有什么区别requires and 需要传递性模块声明中的模块语句 例如 module foo requires java base requires transitive java compiler 可读性回顾 如果模块bar requi
  • GitHub 页面未更新

    我在 GitHub 页面上遇到了一个奇怪的问题 我将新提交推送到我的个人页面maltzj github io http maltzj github io 但新文章没有出现在那里 当我在本地执行服务器时 帖子位于localhost 4000
  • 用于查找字符串中 URL 的正则表达式

    有谁知道我可以使用正则表达式来查找字符串中的 URL 我在 Google 上找到了很多用于确定整个字符串是否是 URL 的正则表达式 但我需要能够在整个字符串中搜索 URL 例如 我希望能够找到www google com and http
  • 想要将唯一值转换为第一/第二/第三变量

    我有一个数据集样本 需要转换为宽格式 但我有一个特定问题 尚未在 StackOveflow 上看到解决 我想用来制作长数据集的列对于每一行都有唯一的值 但我想创建一个新的数据集 以便每个 idvar 的 n 个属性有 n 个变量 我需要转换
  • 为什么删除( DictionaryInstance[ key ] );失败?

    我的应用程序使用字典 protected categoryToValueDict Dictionary new Dictionary 将某物映射到另一物 现在 在应用程序的某个时刻 我需要从Dictionary 我实现了这个简单的方法 pu
  • 从 id 列表中删除单引号

    我需要使用 API 调用的 id 列表附加 格式化 URL 但是 当我将列表放在 API 末尾时 https api twitter com 1 1 users lookup json user id s a 我只是得到一个空字符串作为响应
  • 具有身份 monad 的 Monad 转换器

    将 Monad 变压器与 Identity monad 一起使用而不是仅仅使用 标准 版本的变压器有什么意义 是不是更灵活 Back in mtl1 0 我们两者都有 newtype State s a State runState s g
  • 如何从 Windows Azure Active Directory 身份验证的 oauth2.0 身份验证中注销

    我们使用 oauth 2 0 进行 Windows Azure Active Directory 身份验证 其中执行身份验证 身份验证成功后 我们将重定向到我们的网站 为了注销网站 我们删除了网站上生成的所有 cookie 并再次重定向到