验证访问令牌 - Asp.Net 身份

2023-11-26

我正在使用 ASP.Net Identity 来实现外部登录。用户使用 Google 登录后,我获得了 google 的外部访问令牌。然后我进行第二次 api 调用获取LocalAccessToken()它将外部访问令牌换成新的本地访问令牌。

ObtainLocalAccessToken() calls 验证外部访问令牌()它通过手动进行 http 调用并解析 user_id 来验证提供者的外部访问令牌。

如何利用 ASP.NET 身份来删除整个方法VerifyExternalAccessToken()?

我相信就是这样[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]是为了不是吗?我要装饰ObtainLocalAccessToken()具有该属性的端点并在标头中发送 external_access_token ({'Authorization' : 'Bearer xxx' }),并且它应该填充User.Identity无需手动验证外部访问令牌?我相信这就是目的,但我无法让它发挥作用。我从 google 发送了一个有效的外部访问令牌,但它被拒绝并显示 401。

顺便说一句,我在 Startup.Auth 中有这一行:

 app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(),
            AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
            AllowInsecureHttp = true
        });

或者,是否可以使用“/Token”端点将外部访问令牌换成本地访问令牌?哪种方法是正确的?


研究 Taiseer Joudeh 的实现

the /ExternalLogin端点取代OWIN 身份验证挑战.

The AngularJS LoginController拨打电话authService.obtainAccessToken当在身份提供程序中未找到外部身份验证的用户时:

        if (fragment.haslocalaccount == 'False') {
           ...
        }

        else {
            //Obtain access token and redirect to orders
            var externalData = { provider: fragment.provider,
                      externalAccessToken: fragment.external_access_token };
            authService.obtainAccessToken(externalData).then(function (response) {

                $location.path('/orders');

它使用验证外部访问令牌执行反向查找Google and Facebook用于获取不记名令牌的声明信息的 API。

        if (provider == "Facebook")
        {
            var appToken = "xxxxxx";
            verifyTokenEndPoint = string.Format("https://graph.facebook.com/debug_token?input_token={0}&access_token={1}", accessToken, appToken);
        }
        else if (provider == "Google")
        {
            verifyTokenEndPoint = string.Format("https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={0}", accessToken);
        }
        else
        {
            return null;
        }

如果找到 token,则返回一个新的 tokenASP.NET不记名令牌

        var accessTokenResponse = GenerateLocalAccessTokenResponse(user.UserName);

        return Ok(accessTokenResponse);

With [HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)] the OWIN中间件使用外部不记名令牌访问第 3 方的 Cookie 并注册新帐户(或查找现有帐户)。

OWIN中间件无法配置为接受外部不记名令牌而不是地方当局令牌。外部不记名代币仅用于身份验证和注册。

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

验证访问令牌 - Asp.Net 身份 的相关文章

  • 如何在 Caliburn.Micro 中使用 Conductor 的依赖注入

    我有时用Caliburn Micro http caliburnmicro com创建应用程序 使用最简单的 BootStrapper 我可以像这样使用 IoC 容器 SimpleContainer private SimpleContai
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • 错误:“运行所选代码生成器时出错:包恢复失败”

    我正在尝试将控制器添加到 ASP NET Core 项目中的解决方案中 当我尝试这样做时 我收到此错误 我收到相同的消息 为控制器添加最小依赖项和完整依赖项 我也有这个问题 使用实体框架添加控制器 gt 带有操作的 API 控制器 将给出
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 使用 LINQ 展平嵌套字典

    所以我有一本形式的字典Dictionary
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 可以通过模板间接访问基类中的私有类型

    我试图在编译时根据类型是否在给定范围内公开可用来选择要使用的类型 最好直接看代码 include
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • 在 Linq 查询中使用动态列名称

    foreach Dimension dimensions in Enum GetValues typeof Dimension var r new ReferenceTable dimensions referenceItems List
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 我的代码哪里有泄漏?

    下面是我的代码 它打开一个 XML 文件 old xml 过滤无效字符并写入另一个 XML 文件 abc xml 最后 我将再次加载 XML abc xml 当执行以下行时 出现异常 表示 xml 文件被另一个进程使用 xDoc Load
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 从 AuthorizeAttribute 继承的属性不起作用

    我目前正在尝试根据用户角色在新的 ASP MVC 5 应用程序中实现安全性 目标是防止用户在没有特定角色 或更高角色 的情况下访问某些控制器或控制器方法 根据到目前为止我所读到的问题 我创建了一个继承 AuthorizeAttribute
  • 使用 DataGridViewCheckboxCell 真正禁用 DataGridView 中的复选框

    有谁知道如何使用 DataGridViewCheckboxCell 禁用 DataGridView 中的复选框 我可以将其设置为只读 并设置背景颜色 但我无法让复选框本身显示为禁用状态 有什么想法吗 Guess 你必须自己画 http so
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • 如何从 C# 中的 Web Api 方法正确获取字节数组?

    我有以下控制器方法 HttpPost Route SomeRoute public byte MyMethod FromBody string ID byte mybytearray db getmybytearray ID working
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • 从 CGImageRef 创建的 UIImage 失败并显示 UIImagePNGRepresentation

    我使用以下代码从较大的 UIImage 中裁剪并创建一个新的 UIImage 我已将问题与函数 CGImageCreateWithImageInRect 隔离开来 该函数似乎没有按照我想要的方式设置某些 CGImage 属性 问题是调用函数
  • java - 通过引用传递双精度值

    如何在java中通过引用传递双精度值 example Double a 3 0 Double b a System out println a a b b a 5 0 System out println a a b b 此代码打印 a 3
  • 停止单个 UICollectionView 单元格流向屏幕中心

    我试图理解为什么集合视图仅将集合中的最后一个单元格居中对齐 我创建了一个简单的基于流布局的集合视图 我正在使用自动布局标志 我不确定是否会导致此问题 每当我从 集合 视图中删除一个单元格时 前几个单元格似乎工作正常并滚动到左侧 然而 当我删
  • 带有命令行 Blender 参数的 Python 脚本

    我是搅拌机和蟒蛇的新手 我有一个搅拌机模型 blend 我想将其批量渲染为多个图像 为每个图像提供一些属性 我用这些参数编写了一个 python 脚本 如下所示 import bpy pi 3 14159265 fov 50 scene b
  • 像素着色器效果示例

    我见过许多像素着色器效果示例 例如图像上的漩涡 但我想知道是否有人知道有关着色器效果的更实际用途的任何示例或教程 我并不是说漩涡效果没有它的用 途 只是我发现的许多示例都解释了基本效果 并且没有深入探讨如何巧妙地将其与另一种效果一起使用或过
  • powershell invoke-webrequest 登录网站

    我使用 invoke webrequest 登录网站取得了很大的成功 但我很困惑 我正在尝试登录https ctslink com or https direct ctslink com 登录表单有一个隐藏的令牌字段 每次我尝试登录时该字段
  • 填充 SVG 的一定百分比并设置填充动画

    目前 我正在开展一个项目 将州数据与另一个国家的数据进行比较 一个数据点是受保护土地的百分比 我想填写与该数据点匹配的州的百分比 例如 如果北卡罗来纳州 25 的地区受到保护 那么我希望该州 25 的地区得到保护 目前 我正在尝试使用 sv
  • Google GWT 跨浏览器支持:是废话吗?

    我在 FlashBuilder 中开发了一个浏览器部署的全文搜索应用程序 它与远程 Web 服务器进行 REST 通信 该软件适合一个很小的利基市场 它用于古代语言而不是现代语言 我不可能在它上面赚到任何钱 但我确实花了很多时间在它上面 现
  • Unicode 到 UTF-8

    我正在使用 vbscript 从 db2 提取数据并写入文件 写入文件如下 Set objTextFile objFSO CreateTextFile sFilePath True True 以 unicode 创建文件 但那是 xml 文
  • 如何将 android.graphics.Color 转换为 androidx.compose.ui.graphics.Color

    我正在绘制 Jetpack ComposeCanvas Canvas modifier modifier clipToBounds val colorEvaluator ArgbEvaluator colorEvaluator evalua
  • Inno Setup:如何更改背景颜色

    有没有办法将 Inno Setup 底部面板的背景颜色更改为白色 感谢您的帮助 您描述的底部面板实际上是向导表单的区域 因此您只需设置Color的财产WizardForm对象本身 Code procedure InitializeWizar
  • 我应该在 ARC 的 init 方法中引用 self.property 吗?

    一个简单的问题 如果我有一个属性和一个同名声明的 ivar 在 h文件中 Reminder reminder property nonatomic strong Reminder reminder 在 m 文件中 如果我使用 ARC 我应该
  • 通用 querydsl orderBy 具有左连接的动态路径生成

    我在使用 JPA 与 Querydsl 和 Hibernate 进行数据存储管理时遇到了问题 样例模型如下 Entity public class User ManyToOne JoinColumn name CATEGORY ID pri
  • IE https CORS XHR 请求失败,并显示 Script7002:XMLHttpRequest:网络错误 0x2eff

    在所有其他非 IE 浏览器中 以下代码片段效果很好 在两个不同的 IE11 浏览器 在不同的操作系统版本
  • 使用 BeautifulSoup CSS 选择器获取文本

    HTML 示例 h2 ABC span class numbers 123 span span class lower abc span h2 我可以通过以下方式获取数字 soup select name gt span numbers 0
  • 同一类型的多个对象集

    我尝试在 EF5 RC 中创建与此类似的数据上下文 class WordContext DbContext public DbSet
  • Javascript 类型数组和字节顺序

    我正在使用 WebGL 渲染二进制编码的网格文件 二进制文件以大端格式写入 我可以通过在十六进制编辑器中打开文件或使用 fiddler 查看网络流量来验证这一点 当我尝试使用 Float32Array 或 Int32Array 读取二进制响
  • NSNotificationCenter 选择器未被调用

    在我的 iPad 应用程序中 我在一堂课中注册了一条通知 NSNotificationCenter nc NSNotificationCenter defaultCenter nc addObserver self selector sel
  • 如何更改Android顶部工具栏菜单项图标大小

    如何更改 Android 工具栏中菜单项的大小 目前菜单的尺寸非常小 我想增加尺寸 如果有人知道请帮助我找到解决方案 应用程序栏 xml
  • 验证访问令牌 - Asp.Net 身份

    我正在使用 ASP Net Identity 来实现外部登录 用户使用 Google 登录后 我获得了 google 的外部访问令牌 然后我进行第二次 api 调用获取LocalAccessToken 它将外部访问令牌换成新的本地访问令牌