- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请耐心等待,因为我对 Azure B2C 还很陌生。我的问题是,在注销 Azure B2C 身份验证应用程序时,我似乎无法设置注销重定向 uri。
一些背景信息,该应用程序是一个带有 Razor 页面的 .NET Core Web 应用程序,并在创建项目时通过 Visual Studio 中的帮助程序工具设置了身份验证。
我可以看到生成的默认注销按钮使用 asp Controller “Account”和 asp 操作“SignOut”访问标题为“AzureADB2C”的 asp 区域。所有这些都隐藏在 B2C 库中,我在解决方案中似乎无法访问该库。
我尝试创建自己的注销按钮,删除身份验证 cookie,然后向 Microsoft 发送注销请求并附加重定向 URL,但这似乎不起作用。
这是创建项目时提供的默认注销
<a class="nav-link text-dark" asp-area="AzureADB2C" asp-controller="Account" asp-action="SignOut">Sign out</a>
</li>
我尝试删除 auth cookie 和 reidrect 的后端方法不起作用。
public async Task<RedirectResult> OnPostLogout()
{
foreach (var cookieKey in Request.Cookies.Keys)
{
Response.Cookies.Delete(cookieKey);
}
return new RedirectResult(https://MyApp.azurewebsites.net/.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fgoogle.com);
}
当我尝试自己的注销按钮时,重定向似乎不起作用。
最佳答案
虽然将用户定向到 end_session_endpoint 将清除用户使用 Azure AD B2C 的部分单点登录状态,但不会将用户从用户的社交身份提供商 (IDP) session 中注销。如果用户在后续登录期间选择相同的 IDP,他们将重新进行身份验证,而无需输入其凭据。如果用户想要退出您的 B2C 应用程序,并不一定意味着他们想要完全退出 Facebook 帐户。但是,对于本地帐户,用户的 session 将正确结束。
当您想要让用户退出应用程序时,仅清除应用程序的 cookie 或以其他方式结束与用户的 session 是不够的。将用户重定向到 Azure AD B2C 以注销。如果您不这样做,用户可能能够重新对您的应用程序进行身份验证,而无需再次输入其凭据。
您只需将用户重定向到 OpenID Connect 元数据文档中列出的 end_session
端点即可:
GET https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/oauth2/v2.0/logout?
p=b2c_1_sign_in
&post_logout_redirect_uri=https%3A%2F%2Faadb2cplayground.azurewebsites.net%2F
https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=b2c_1_sign_in
请参阅下面的文档以获取更多引用
希望有帮助。
关于c# - 使用 Azure B2C 和 .NET Core 进行注销重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56874202/
我有两种结构,Header 和Session,它们都符合协议(protocol)TimelineItem。 我有一个 Array 由 TimelineItem 组成,如下所示: [Header1, S
这个问题在这里已经有了答案: Multiple assignment and evaluation order in Python (11 个答案) 关闭 6 年前。 我刚接触python所以想问你
我试图找到一种方法来在 R 中获取 A、A、A、A、B、B、B、B、B 的所有可能的唯一排列的列表。 组合最初被认为是获得解决方案的方法,因此组合的答案。 最佳答案 我认为这就是你所追求的。 @bil
我怎样才能将两个给定的向量混合成一个新的向量,它以交替的顺序保存它们的值。 (f [a a] [b b]) ; > [a b a b] 这是我想到的: (flatten (map vector [:a
这是我的第一个问题,我开始学习Python。之间有区别吗: a, b = b, a + b 和 a = b b = a + b 当您在下面的示例中编写它时,它会显示不同的结果。 def fib(n):
这个问题在这里已经有了答案: Why is there an injected class name? (1 个回答) 12 个月前关闭。 我不知道如何解释: namespace A { struct
我尝试了一些代码来交换 Java 中的两个整数,而不使用第三个变量,使用 XOR。 这是我尝试过的两个交换函数: package lang.numeric; public class SwapVars
假设类 B 扩展类 A,并且我想为 B 声明一个变量。什么更有效?为什么? B b或 A b . 最佳答案 您混淆了两个不同的概念。 class B extends A { } 意味着B 是 A .
我不确定这个问题的标题是什么,这也可能是一个重复的问题。所以请相应地指导。 我是 python 编程的新手。我有这个简单的代码来生成斐波那契数列。 1: def fibo(n): 2: a =
我在谷歌上搜索了有关 dynamic_cast 的内容,我发现显式地将基类对象转换为派生类指针可能是不安全的。但是当我运行一些示例代码来检查它时,我没有收到任何错误。请在下面找到我的代码: class
这个问题在这里已经有了答案: What is this weird colon-member (" : ") syntax in the constructor? (14 个答案) 关闭 8 年前。
在不重现产生非整数值的表达式的情况下实现以下目标的惯用方法是什么(在我的真实情况下,该值是在我不想重现的冗长查询之后计算为百分比的): SELECT * FROM SomeTable WHERE 1/
在析构中,这两个代码的结果确实不同。我不确定为什么。 提示说 const [b,a] = [a,b] 将导致 a,b 的值为 undefined (从左到右的简单分配规则)。我不明白为什么会这样。 l
C++ Templates - The Complete Guide, 2nd Edition介绍max模板: template T max (T a, T b) { // if b < a th
我最近开始学习代码(Java),并根据第 15.17.3 节在 Oracle 网站上查找了模运算符。以下链接: http://docs.oracle.com/javase/specs/jls/se8/
无法理解以下行为。 d1 := &data{1}; 的区别d1 和 d2 := 数据{1}; &d1。两者都是指针,对吧?但他们的行为不同。这里发生了什么 package main import "f
这个问题在这里已经有了答案: How to make loop infinite with "x = y && x != y"? (4 个回答) How can i define variables
在我的程序中,当我调试我的代码时,它似乎在我生成的代码中的某处 X1=['[a,a,a]','[b,b,b]'] 还有我生成的其他地方 X2=[[a,a,a],[b,b,b]] 当我想添加这两个列表然
我试图使用递归将两个整数相乘,并意外编写了这段代码: //the original version int multiply(int a, int b) { if ( !b ) retu
我有一个列表中数字之间所有可能的操作组合: list = ['2','7','8'] 7+8*2 8+7*2 2*8+7 2+8*7 2-8*7 8-2/7 etc 我想知道是否可以说像 ('7*2+
我是一名优秀的程序员,十分优秀!