IdentityServer4 - 直接从外部提供商登录

2024-05-02

我已经实现了从 Azure AD 登录的选项。我使用的客户端类型是混合型。因此,现在,当用户在我的应用程序上输入受限控制时,他将被重定向到登录页面(在 IdentityServer 应用程序站点上),他可以在其中输入用户名和密码,也可以使用 Azure AD 帐户登录。

我想要做的是跳过登录页面并将用户直接重定向到 MS AD 登录页面。这意味着,用户将单击网站上的“登录”链接,这将引导他进入 Azure AD 登录页面。一旦他成功登录,他将被重定向回我的应用程序(基本上是相同的流程,只是省去了进入 IdentityServer 登录页面并单击外部登录按钮的额外步骤)。

这可能吗?


在客户端选项中,尝试将 EnableLocalLogin 设置为 false。来自docs http://docs.identityserver.io/en/release/reference/client.html:

启用本地登录

指定此客户端是否可以使用本地帐户或仅使用外部 IdP。默认为 true。

我也使用 Asp.Net Core Identity,如果 EnableLocalLogin 为 false 并且只有一个外部提供商,或者在请求中显式设置了 idP,则我将 AccountsController 设置为绕过本地页面。

[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Login(string returnUrl = null)
{
    // Clear the existing external cookie to ensure a clean login process
    await HttpContext.Authentication.SignOutAsync(_externalCookieScheme);

    var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
    if (context?.IdP != null)
    {
        // if IdP is passed, then bypass showing the login screen
        return ExternalLogin(context.IdP, returnUrl);
    }

    var vm = await BuildLoginViewModelAsync(returnUrl, context);

    if (vm.EnableLocalLogin == false && vm.ExternalProviders.Count() == 1)
    {
        // only one option for logging in
        return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
    }

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

IdentityServer4 - 直接从外部提供商登录 的相关文章

随机推荐

  • 为什么 rm 不能按我的预期工作?

    我只想做一件简单的事 我在目录中得到了以下文件 AppInterface h baa PEMsg h PluginInterface h 然后我发出命令 ls grep v h rm rf 令我非常沮丧的是 baa不会被删除 但是这个 ls
  • 没有名为 objc 的模块

    我正在尝试将 cocoa python 与 Xcode 一起使用 但它总是会出现错误 Traceback most recent call last File main py line 10 in
  • 将 viewbag 转换为 javascript 数组

    我想将数据从 ViewBag mytags 获取到 Javascript 数组 但我无法执行此操作 function var sampleTags new Array var array Html Raw Json Encode ViewB
  • Delphi LZMA减压样本

    我发现在this https stackoverflow com questions 4344976 lzma or 7zip in delphi的线程链接delphi压缩包 https github com ccy delphi zip具
  • 将 Facebook 营销活动目标与洞察行动类型相匹配

    Facebook 活动的目标是此处列出的 https developers facebook com docs marketing api reference ad campaign group Creating PAGE LIKES VI
  • 在 Flutter 中将数据异步加载到 ChangeNotifier 模型中

    在我的 Flutter 应用程序中我有一个小部件 class HomeScreen extends StatelessWidget 使用模型 class HomeScreenModel extends ChangeNotifier 这两个对
  • CXFServlet 抛出 java.lang.NoSuchMethodError:

    java lang NoSuchMethodError org codehaus stax2 ri EmptyIterator getInstance Lorg codehaus stax2 ri EmptyIterator at com
  • Markdown/Github:作为列表子项的代码块的语法突出显示

    在Github MD中 如果我们想在列表的子级时启用代码块 我们需要用8个空格来表示它 但是如何让该代码块具有语法高亮功能呢 以下代码无法按预期工作 1 foo python print bar 2 bar python print bar
  • 如何使用 RestTemplate 禁用编码

    我正在使用 REST 模板有意在请求 uri 中发送 例如 items a b String responseEntity restTemplate exchange items a b requestObj getHttpMethod r
  • angular.isdefine 有什么好处?

    有什么好处angular isdefined超过和超过foo undefined 我一时想不出有什么好处 在 Javascript 中以任何方式访问真正未定义的变量 除了 typeof 都会抛出错误 你只能使用Angular isDefin
  • AWS ECS 重启策略

    我检查了在 ECS 集群中运行的一个 docker 容器 它的重启策略为空白 HostConfig RestartPolicy Name 我不确定 ECS 在发生故障时会做什么 但我想将策略更改为在实例中运行的 cmd 失败时重新启动容器实
  • 如何使用 JavaScript 或 jQuery 获取 html 元素的比例值?

    我想知道如何获得元素的比例值 我努力了 element css webkit transform 返回matrix scaleX 0 0 scaleY 0 0 有没有办法得到scaleX and scaleY only 找出文档和元素之间的
  • PrimaryContext如何登录域服务器

    我有以下 C 代码 用于连接到我的域服务器并对其执行一些操作 我的计算机上一切正常 我可以正常运行所有命令 我的问题是 连接服务器使用什么凭据 我假设它使用当前用户的凭据 所以我真正的问题是这对普通用户有效吗 我是管理员 它在我的机器上运行
  • 如何为 HTML 验证提供自定义验证错误消息?

    当我使用默认 HTML 验证时 它会显示默认错误消息 这不是我想向客户显示的 我需要自定义消息并为每个验证提供不同的信息 例如最小 最大 类型和要求 例如 该字段为必填项 值不匹配 参考传统的HTML代码
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • 如何在 Objective-C 中创建委托?

    我知道代表如何工作 也知道如何使用它们 但我该如何创建它们呢 Objective C 委托是一个已分配给delegate属性另一个对象 要创建一个 您需要定义一个实现您感兴趣的委托方法的类 并将该类标记为实现委托协议 例如 假设您有一个UI
  • Spark parquet 分区:大量文件

    我正在尝试利用 Spark 分区 我试图做类似的事情 data write partitionBy key parquet location 这里的问题是每个分区都会创建大量镶木地板文件 如果我尝试从根目录读取 则会导致读取速度变慢 为了避
  • 使用 javascript onClick 播放 mp3 文件

    我正在播放 mp3 文件 只是 javascript onClick 下面是我的代码 Music File 1
  • 检测已退款的托管应用内购买 android IAP 2.0.3

    我无法弄清楚如何使用 Android 检测何时为托管 不可消费 应用内产品发放退款com android billingclient billing 2 0 3 这个问题似乎相当深 尽管我可能让它变得比应有的更复杂 首先 我进行了一次测试购
  • IdentityServer4 - 直接从外部提供商登录

    我已经实现了从 Azure AD 登录的选项 我使用的客户端类型是混合型 因此 现在 当用户在我的应用程序上输入受限控制时 他将被重定向到登录页面 在 IdentityServer 应用程序站点上 他可以在其中输入用户名和密码 也可以使用