陷入 Azure OAuth2 令牌请求中的两个错误之间

2023-11-26

我正在为 OWIN 和 Azure Active Directory 实现 OAuth2 提供程序。 FWIW,目前 OpenId Connect 选项不符合这项工作的要求。

我获得一个身份验证代码,并使用 auth_code、状态返回到我的回复 URL,并向“scheme://login.windows.net/{myguid}/oauth2/token”发出令牌请求。

 // Build up the body for the token request
 var body = new List<KeyValuePair<string, string>>();
 body.Add(new KeyValuePair<string, string>("grant_type", "authorization_code"));
 body.Add(new KeyValuePair<string, string>("code", code));
 body.Add(new KeyValuePair<string, string>("redirect_uri", redirectUri));
 body.Add(new KeyValuePair<string, string>("client_id", Options.ClientId));
 body.Add(new KeyValuePair<string, string>("client_secret", Options.ClientSecret));

 // Request the token
 HttpResponseMessage tokenResponse =
     await httpClient.PostAsync(TokenEndpoint, new FormUrlEncodedContent(body));
 string text = await tokenResponse.Content.ReadAsStringAsync();
 tokenResponse.EnsureSuccessStatusCode();

我收到此错误:

{"error":"invalid_resource","error_description":"AADSTS50001: Resource identifier is not provided.
Trace ID: 227f2af8-0837-4f22-ac0f-a09b3f9a6d50
Correlation ID: 3d783f11-44d0-4efa-8831-3dd581d653ed
Timestamp: 2014-08-08 21:59:49Z","error_codes":[50001],"timestamp":"2014-08-08 21:59:49Z","trace_id":"227f2af8-0837-4f22-ac0f-a09b3f9a6d50","correlation_id":"3d783f11-44d0-4efa-8831-3dd581d653ed"}

好的,我添加资源选项:

 // Build up the body for the token request
 var body = new List<KeyValuePair<string, string>>();
 body.Add(new KeyValuePair<string, string>("grant_type", "authorization_code"));
 body.Add(new KeyValuePair<string, string>("code", code));
 body.Add(new KeyValuePair<string, string>("redirect_uri", redirectUri));
 body.Add(new KeyValuePair<string, string>("client_id", Options.ClientId));
 body.Add(new KeyValuePair<string, string>("client_secret", Options.ClientSecret));
 body.Add(new KeyValuePair<string, string>("resource", "https://myappid"));

{"error":"invalid_request","error_description":"AADSTS90027: The client 'xxxxx' and resource 'https://myappid' identify the same application.
Trace ID: 6c77f123-d75f-43a9-8117-b3f372891ee4
Correlation ID: d9081f8b-b690-4478-bf15-55325a9736ec
Timestamp: 2014-08-08 21:48:34Z","error_codes":[90027],"timestamp":"2014-08-08 21:48:34Z","trace_id":"6c77f123-d75f-43a9-8117-b3f372891ee4","correlation_id":"d9081f8b-b690-4478-bf15-55325a9736ec"}

所以我必须拥有与我的客户端 ID 关联的正确应用程序 ID。哼!我显然做错了什么,但似乎看不到它。有什么建议么?


我遇到了同样的问题,我只是想实现用户登录。

在尝试了 1000 件事(包括这篇文章)之后,我发现我可以使用 Microsoft.Azure.ActiveDirectory-id 作为资源参数。这样我就不必创建第二个应用程序。

http://blogs.msdn.com/b/besidethepoint/archive/2012/10/23/getting-started-with-azure-active-directory.aspx

nameValuePairs.add(new BasicNameValuePair("resource", "00000002-0000-0000-c000-000000000000"));

并得到了令牌

UPDATE:

天蓝色的支持建议我使用https://graph.windows.net/ :

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

陷入 Azure OAuth2 令牌请求中的两个错误之间 的相关文章

随机推荐

  • 显示进度条,显示表单提交的进度

    这个问题还没有完全解答 欢迎大家踊跃留言 我正在尝试显示一个简单的progress bar提交大表格时 该表单包含十几个字段 以及一些文件上传字段 用户可以在其中选择图片 然后 当他点击Create按钮 提交带有数据和图片的表单 并在数据库
  • 使用 Fluent nHibernate 和 Ninject 实现多租户。每个租户一个数据库

    我正在构建一个多租户 Web 应用程序 出于安全考虑 我们需要为每个租户拥有一个数据库实例 所以我有一个用于身份验证的 MainDB 和许多用于应用程序数据的 ClientDB 我正在使用 Asp net MVC 与 Ninject 和 F
  • 使用 PDFBox 添加页码

    如何向使用 PDFBox 生成的文档中的页面添加页码 谁能告诉我如何在合并不同的 PDF 后向文档添加页码 我正在使用 Java 中的 PDFBox 库 这是我的代码 它运行良好 但我需要添加页码 PDFMergerUtility ut n
  • iOS StoreKit - 何时调用 - (void)restoreCompletedTransactions?

    我的应用程序中有很多一次性购买的 IAP 用户可以购买它们 我的问题是 我正在与 Flurry 集成来跟踪实际购买情况 而不是仅仅恢复购买情况 但我的SKPaymentTransaction s transactionState总是回来作为
  • AttributeError:“列表”对象没有属性“点击” - Selenium Webdriver

    我正在尝试使用 python 在 Selenium webdriver 中使用 click 命令 但我收到以下错误 有人能帮我吗 Traceback most recent call last File C Users vikram wor
  • 在android中创建自定义工具栏

    我正在尝试在 android 中创建一个自定义扩展工具栏 并在工具栏中编辑文本 我想要实现的布局看起来像这样 我编写的实现代码是这样的
  • 无法获取当前线程的事务同步会话

    我在从 xml 转换为 Java Config 的 Spring4 Hibernate4 项目中遇到以下异常 org hibernate HibernateException Could not obtain transaction syn
  • threading.local() 是在 Google AppEngine 中存储单个请求的变量的安全方法吗?

    我有一个 google appengine 应用程序 我只想为该请求设置一个全局变量 我可以这样做吗 在request vars py中 request vars py global vars threading local 在另一个 py
  • 在 Fortran 中打开二进制文件:状态、表单、访问

    我使用 Fortran 已有多年 但文件 I O 对我来说仍然很模糊 我的理解status form access recl是有限的 因为我在研究生院需要某些用例 我知道 Fortran 二进制文件在文件顶部有描述文件大小的额外信息 但这对
  • 无法使用response.sendRedirect进行重定向

    我在 google 上搜索了好几个小时 了解如何在 jsp 或 servlet 中进行重定向 然而 当我尝试应用它时 它不起作用 我在jsp页面内的代码 我从调试中知道 regexp 有效 并且如果有任何时候 articleId 不是数字
  • Android 布局参数仅更改宽度和高度

    我知道如何使用设置视图的宽度和高度LayoutParams通过执行以下操作 android view ViewGroup LayoutParams params button getLayoutParams params width hei
  • 可以运行的最大 Swing 工作线程数是多少

    可以运行的 Swing Worker 线程数是否有上限 或者是内存支持的上限 这也可以在某处配置吗 A SwingWorker本身不是线程 而是将在线程中执行的任务 通常 您会使用ExecutorService执行实例SwingWorker
  • C# 将一个列表拆分为多个列表

    我有一个发送到队列的字符串列表 我需要拆分列表 以便最终得到一个列表列表 其中每个列表包含最大 用户定义 数量的字符串 例如 如果我有一个包含以下 A B C D E F G H I 的列表 并且列表的最大大小为 4 我希望最终得到一个列表
  • 如何在Windows上安装tesserocr?

    我下载了 tesseract OCR 的可执行文件并安装了它 另一方面 我还从以下位置下载了 leptonica 的 zip 文件 http www leptonica com download html 它包括两个目录 即lib and
  • 在Python中应用时变过滤器

    我正在尝试使用 Python 将具有时变截止频率的带通滤波器应用于信号 我当前使用的例程将信号划分为等长的时间段 然后对于每个段 我应用具有特定时间参数的滤波器 然后将信号合并在一起 这些参数基于预先存在的估计 我似乎遇到的问题是 应用过滤
  • MySQL:连续月份的记录计数

    我已经四处寻找这个 但所有类似的问题和答案都不同 无法工作 我有一个包含以下字段的表 人 事 purdate 当一个人购买每一件新东西时 就会输入一个新记录 我想计算一个人连续几个月购买了任何东西 thing01 或 thing02 没关系
  • 在 R 中复制矩阵的行

    假设我有一个矩阵m和一个正整数向量v 我想做的是得到一个新的矩阵m new和每一行m say m i 被复制v i 次在m new 例如 m matrix 1 6 nrow 3 1 2 1 1 4 2 2 5 3 3 6 v c 3 1 2
  • 为什么 GCC 不在编译时评估 constexpr?

    举个例子 class something public static constexpr int seconds int hour int min int sec return hour 3600 min 60 sec then print
  • JFreeChart - 将图表线的 SeriesStroke 从实线更改为单线虚线

    此处接受的答案 JFreechart Java 如何绘制部分虚线和部分实线的线 帮助我开始改变图表上的系列划线 在单步执行我的代码并观察更改后 我发现我的系列笔画实际上在应该的时候 在某个日期 dashedAfter 之后 更改为 dash
  • 陷入 Azure OAuth2 令牌请求中的两个错误之间

    我正在为 OWIN 和 Azure Active Directory 实现 OAuth2 提供程序 FWIW 目前 OpenId Connect 选项不符合这项工作的要求 我获得一个身份验证代码 并使用 auth code 状态返回到我的回