使用 asp.net Identity 进行 Azure AD 身份验证以进行授权

2023-12-27

我试图在互联网上寻找所有内容,但不知道如何才能实现我所要求的目标。这是我的企业应用程序,它使用 Asp.net Identity 进行基于表单的身份验证。我扩展了用户和角色以及组以在我的代码中提供授权。 (注意:不使用任何组/角色指令)。

现在,我被要求考虑更改代码以适应 Azure Active Directory 身份验证的可能性。我尝试阅读如何注册应用程序、将用户发送到 Azure 站点进行身份验证、获取令牌等。但是我陷入了“之后做什么?”我已经验证了用户如何使用我现有的 Asp.net 身份模型,其中用户存储在 sql 数据库中。如何使用此令牌来关联现有用户。

此外,当我更改项目以允许 Azure AD 时,它会删除 Aspnet.Identity 包,因为它与 Azure AD 不兼容!

我什至尝试手动将两个包并排保存,我必须指出用户被发送到 Azure 上进行身份验证的位置,然后转移回主页,然后再次登录到 Azure AD,永不停歇的循环。

总结一下这个问题:如何从 AAD 验证用户身份并继续使用现有的角色和组授权。

Edit:我尝试创建单独的 Web 服务,它将对用户进行身份验证并发送 JWT 令牌。如果我直接在浏览器上调用它,它会起作用,但是,当我尝试从我的网络应用程序调用此服务时,我收到奇怪的错误

 Application with identifier 'a2d2---------------' was not found in the directory azurewebsites.net

这里奇怪的部分是目录名称是“azurewebsites.net”,而不是我正在使用的默认目录。

Update这是抛出错误的代码

public async Task<ActionResult> Login(string returnUrl)
        {


            try
            {

                // get the access token
                AuthenticationContext authContext = new AuthenticationContext(authority, new TokenCache());

                var clientCredential = new ClientCredential(clientId, password);
//Error on below line
                AuthenticationResult result = await authContext.AcquireTokenAsync(resourceId, clientCredential);


                // give it to the server to get a JWT
                HttpClient httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
......

尝试这个:

var client = new RestClient("https://login.microsoftonline.com/{tenant- 
         Id}/oauth2/v2.0/token");
var request = new RestRequest(Method.POST);         
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");         
request.AddHeader("grant_type", "password");
request.AddParameter("application/x-www-form-urlencoded", 
        "grant_type=password&client_id={client-Id}&client_secret={client- 
        secret}&scope={scopeurl}&userName={username}&password={password}", 
        ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var json = response.Content;
var JSONObject = JObject.Parse(json);
var token = (string)JSONObject["access_token"];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 asp.net Identity 进行 Azure AD 身份验证以进行授权 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 如何在 Asp.NET MVC 中使用 RedirectToAction() 传递多个对象?

    我想使用redirectToAction 方法传递多个对象 下面是我重定向到的操作结果 public ActionResult GetEmployees Models Department department Models Categor
  • 使用 GCC 生成可读的程序集?

    我想知道如何使用GCC http en wikipedia org wiki GNU Compiler Collection在我的 C 源文件中转储机器代码的助记符版本 这样我就可以看到我的代码被编译成什么 你可以使用 Java 来做到这一
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 当给出日期时,如何在 php 中获取该周星期一的日期[重复]

    这个问题在这里已经有答案了 可能的重复 用 PHP 获取一周的第一天 https stackoverflow com questions 1897727 get first day of week in php 当给出日期时 我应该得到该周
  • 在排序和旋转的数组中搜索

    在准备面试时 我偶然发现了一个有趣的问题 您已获得一个已排序然后旋转的数组 例如 Let arr 1 2 3 4 5 已排序 向右旋转两次即可得到 4 5 1 2 3 现在如何最好地在这个排序 旋转的数组中进行搜索 人们可以取消旋转数组 然
  • libnids 样本中从未调用过 tcp_callback

    我正在研究从 pcap 文件中提取 http 数据 我必须重新组装片段 所以我找到了nids lib 我在 Mac os 10 9 5 64 位中使用自制程序安装 libnids 1 24 我尝试运行打印全部样本 http libnids
  • 图片下载后回调函数

    我正在尝试使用以下命令保存图像下载request https github com mikeal request模块 有了这个 request http google com images logos ps logo2 png pipe f
  • Firebase Android 重新连接最多需要 45 分钟

    在某些设备 下面给出的列表 上 Firebase 在重新获得互联网连接后始终需要 20 到 45 分钟才能重新连接 有什么办法可以加快速度吗 我首先认为问题出在 info connected事件侦听器没有被触发 但后来我意识到 如果有一些待
  • 无法在 AngularJS 版本的 SmartAdmin 模板中使用迷你图

    我已经使用 SmarrAdmin 模板启动了一个 angularjs 种子项目 我想在这样的视图中创建迷你图 div class sparkline 50 40 70 div 但图表没有显示 我看到的只是 50 40 70 创建种子角度项目
  • 如何让Android Studio通过Windows防火墙连接到互联网?

    我启用了 Windows 防火墙并启用了入站和出站规则 在 android studio 中 我在 gradle 同步等时收到 连接到互联网被拒绝 错误 已经允许 studio exe 在防火墙中连接 但它不起作用 如果我禁用防火墙 它就可
  • 在 shell 脚本中将换行符附加到输出文件

    我有一个正在 Cygwin 中执行的 shell 脚本 也许这就是问题所在 对于这段代码 我只想编写第一行 并附加一个换行符 echo date User whoami started the script gt gt output log
  • PHPMyAdmin 不导入 unicode

    当我使用 PHPMyAdmin 的导入功能时 它不会导入非 ASCII 字符 例如 以及字符后的其余单词 当我用记事本打开 CSV 文件时 它通常显示非 ASCII 字符 但当我尝试导入它时 它不起作用 手动输入这些缺失的字符是可行的 My
  • 交易范围类似功能

    我希望设置与事务范围非常相似的东西 它在服务上创建一个版本 并将在范围结束时删除 提交 在事务范围内运行的每个 SQL 语句都会在内部查看某些连接池 事务存储 以确定其是否在范围内并做出适当的反应 调用者不需要将事务传递给每个调用 我正在寻
  • 如何使用 TypeScript 将多个参数传递给 Angular 中的 @Directives (@Components)?

    自从我创建了 Directive as SelectableDirective 我有点困惑 关于如何通过超过一个自定义指令的值 我进行了很多搜索 但没有得到正确的解决方案Angular with 打字稿 这是我的示例代码 父组件为MCQCo
  • 如何对可能为 null 的对象执行 ToString 操作?

    有没有一种简单的方法可以执行以下操作 String s myObj null myObj ToString 我知道我可以执行以下操作 但我确实认为这是一种黑客行为 String s myObj 如果 Convert ToString 有适当
  • 如何在 Windows XP 中使用 Java 远程连接 ODBC?

    我的远程数据库是Mysql数据库 我想检索一些记录并将其放入 Microsoft Access 数据库是本地主机数据库 我还想为远程数据库创建 DSN 请帮我 我刚刚在 MATLAB 中进行了类似的设置 它使用 java 连接到 MySQL
  • 如何高效地将 String 序列化到现有的 ByteBuffer 中?

    看起来String getBytes 将创建一个新的字节数组 因此有一个额外的内存副本 我可以将字符串直接编码为ByteBuffer没有中间字节数组 例如 void putString ByteBuffer bb String s byte
  • 我可以将 MySQL 数据库与 App Engine 应用程序一起使用吗

    我知道 App Engine 有自己的数据存储区 这对于大多数情况来说都很棒并且相当容易使用 然而 我们有一个用于多个应用程序的 MySQL 数据库 但并非所有应用程序都是基于 Web 的 我们想要使用 App Engine 的原因有很多
  • 按字母顺序对可排序列表中超过 13 项的元素进行排序

    我正在使用 jQuery UI 创建多个互连的可排序列表 html div class ulContainer div class liHdr Unassigned div div class ulWraper ul class conne
  • 如何理解Python中列表结构的记忆?

    我想知道python的记忆 这是代码 import sys list1 1 list2 1 2 list3 1 2 3 list4 1 2 3 4 list5 1 2 3 4 5 list6 1 2 3 4 5 6 list7 1 2 3
  • DateTime.Now 更新的频率是多少?或者有没有更精确的API来获取当前时间?

    我有一个循环运行的代码 它根据当前时间保存状态 有时 这可能仅相隔几毫秒 但由于某种原因 DateTime Now 似乎总是返回至少相隔 10 毫秒的值 即使仅晚了 2 或 3 毫秒 这提出了一个主要问题 因为我保存的状态取决于保存的时间
  • Safari 和 php 会话在 facebook iframe 中不起作用

    我在让我的 Facebook 应用程序在 Safari 上运行时遇到问题 该问题与 PHP 会话变量有关 我知道 Safari 在处理跨域会话 在 iframe 内 时存在问题 我发现了大约 2 种解决方案 设置 p3p 标头 我尝试了很多
  • 使用 asp.net Identity 进行 Azure AD 身份验证以进行授权

    我试图在互联网上寻找所有内容 但不知道如何才能实现我所要求的目标 这是我的企业应用程序 它使用 Asp net Identity 进行基于表单的身份验证 我扩展了用户和角色以及组以在我的代码中提供授权 注意 不使用任何组 角色指令 现在 我