在控制台应用程序内以静默方式使用 ADFS 进行身份验证

2024-01-26

我有一个引用 ADAL.net 库的 C# 控制台应用程序(Microsoft.IdentityModel.Clients.ActiveDirectory 版本 2.19.208020213)

控制台应用程序的目的是使用受 ADFS 保护的 HTTP 端点。

ADFS auth 的实现如下......

var uc = new UserCredential("user", "password");
var ctx = new AuthenticationContext("https://sts.example.com/adfs", false);
var token = ctx.AcquireToken(ClientResourceUri, ClientId, uc);

对 AcquireToken 的调用引发异常...

不支持此方法重载 'https://sts.example.com/adfs/ https://sts.example.com/adfs/'

在没有 UserCredential 对象的情况下调用 AcquireToken,并提供一个 redirectUri 是可行的,但会弹出一个对话框,提示输入用户名和密码,这是不合适的,因为控制台应用程序将在非用户环境中执行...

var redirect = new Uri("https://example.com/arbitaryRedirect");
var token = ctx.AcquireToken(ClientResourceUri, ClientId, redirect);
//dialog is shown

如果我切换到 adal.net 库的最新 alpha 版本 (3.6.212041202-alpha) 这个错误更能说明问题......

MSIS9611:授权服务器不支持请求 '授予类型'。授权服务器仅支持 “authorization_code”或“refresh_token”作为授权类型。

然而,挖掘谷歌的收益很少。

是否真的可以针对 ADFS 进行静默身份验证?

我的假设是否正确(基于answers https://stackoverflow.com/questions/19400693/authentication-against-adfs-with-wcf-hosted-on-windows-service其他posts https://stackoverflow.com/questions/14521589/authenticating-against-ad-fs-from-a-net-4-5-console-app)正确的方法是使用 WsTrustChannelFactory 代替?

如果不是,最好的方法是什么?


可以在 Windows Server 2016 中使用 ADAL 3.x 和 ADFS,其代码与您发布的代码几乎相同。旧版本 ADAL 或 ADFS 的组合将不起作用。 或者,您可以使用 WS-Trust - 这明显更难处理,但可以完成工作。

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

在控制台应用程序内以静默方式使用 ADFS 进行身份验证 的相关文章

随机推荐

  • 如何使用ANTLR生成的语法文件?

    我认为这是一个愚蠢的问题 但我刚刚开始使用 ANTLR 我将他们教程中的 SimpleCalc 语法放在一起 并以 C 作为目标语言生成它 我得到了 SimpleCalcParser c h 和 SimpleCalcLexer c h 作为
  • 正则表达式:懒惰更糟糕吗?

    我一直这样写正则表达式 a href target blank lt a 但我刚刚了解到这个懒惰的事 http www regular expressions info examples html我可以这样写 a href target b
  • Python无法访问字典

    Getting TypeError string indices must be integers当尝试访问 python 中的字典时 我尝试过使用json loads r2 这产生了 TypeError the JSON object m
  • 如何使用getCropAndSetWallpaperIntent?

    我尝试使用 getCropAndSetWallpaperIntent 方法 但出现错误 这是我的代码 Uri uri Uri parse content getFilesDir image path ContentResolver cont
  • Angular 8 嵌套拖放

    不幸的是我找不到常见问题的解决方案 这是代码的链接https stackblitz com edit angular ygwaxs https stackblitz com edit angular ygwaxs 我有这样的场景 从服务器我
  • 简单的 Javascript 碰撞检测?

    我正在尝试使用 jquery javascript html 和 css 制作一个简单的游戏 我一直陷入碰撞检测 code var map 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
  • 在 Sequel 中使用 UTC?

    我不想将时间存储在我当地的时区 但续集让我变得非常困难 我可以在将它们放在那里之前将它们设置为 UTC 有点痛苦 但是当我将它们取出时 它会假设它们是本地日期 然后它们都是未来的 8 小时 这是还没有实施的事情吗 如果是这样 有什么解决方法
  • UISearchBarSearchField 背景视图颜色

    I am trying to change the background color of the search bar text field and i have searched and tried lots of solutions
  • 流星模板中包含的谷歌地图被渲染两次

    我有以下模板
  • 设置 Visual Studio 代码以使用 R - “win32 无法使用 R”

    我正在尝试设置 R 以使用 Visual Studio 代码 当我用按键执行一行时CTRL ENTER我收到错误 win32 无法使用 R 我遵循本文中提出的建议中等职位 https medium com analytics vidhya
  • 如何设置phpmyadmin的用户名和密码[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何设置phpmyadmin的用户名和密码 我正在为 localhost 使用 xampp 软件 并且我想锁定我的 phpmyadmin 页面 当我打
  • Intl.NumberFormat 在节点和浏览器中的不同行为

    如果我在浏览器和节点中运行此代码 我会得到两个不同的结果 const moneyFormatter new Intl NumberFormat it IT style currency currency EUR minimumFractio
  • 如何在 jQuery 中永久运行 .animate 函数?

    this css left 100px function endless this animate left 100px easing linear duration 5000 complete function this css left
  • 实体框架级联删除 - FOREIGN KEY 约束

    我对以下模型有问题 public class ProjectPage Key public Guid Id get set public Guid HeaderId get set public ProjectPage Header get
  • 如何在 JList 中启用拖放

    我有一个 JList 并希望用户能够使用拖放功能对列表中的元素重新排序 使用我自己的 ListModel 和 ListCellRenderer 如果这有什么不同的话 我需要创建哪些对象 以及如何处理该操作 修改后的 Jan Taccis 答
  • 从 Python rpy2 使用命令行参数调用 R 脚本

    我希望能够使用 rpy2 模块从 python 调用 R 文件 我希望能够将参数传递给这些脚本 这些脚本可以由 R 的 commandArgs 函数解释 所以如果我的 R 脚本 trivial script r 好像 print comma
  • 寻求一种更好的方法从查找表中添加 data.table 中的列

    我想创建一个新专栏key在我的 data table 中 通过公共列与查找表合并index1 index2 然后从这个新的值key柱子 a b c 我想生成 3 个新列 a b c 索引valuedata table 中的列 我的 data
  • Angular 2 HTTP 超时

    我在发布有关 HTTP 超时的自定义错误消息时遇到问题 这是一个简单的例子 return this http get url timeout 5000 new Error Error message 我看到大家都用新错误 错误消息 但我收到
  • WebView中的支付流程(Android)

    我有一个支付网关的网址 我需要在其中输入信用卡号等 我可以使用 WebView 打开此页面并直接在我的应用程序中付款吗 不打开像 Chrome 这样的单独的网络客户端 谷歌对于用户直接在 WebView 中输入信用卡 借记卡信息的应用程序发
  • 在控制台应用程序内以静默方式使用 ADFS 进行身份验证

    我有一个引用 ADAL net 库的 C 控制台应用程序 Microsoft IdentityModel Clients ActiveDirectory 版本 2 19 208020213 控制台应用程序的目的是使用受 ADFS 保护的 H