Azure MobileApp 自定义身份验证、刷新令牌

2024-02-04

我需要我的应用程序支持针对我们的私人数据库的自定义身份验证,并遵循此处 Adrian Hall 书中的建议https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/custom/ https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/custom/我在验证用户身份时没有遇到任何问题。当我需要刷新访问令牌时,问题就出现了。 由于我被迫保留自定义身份验证,因此我有以下问题:

1) 我是否应该调用 MobileServicesClient.RefreshUserAsync(),如果是,我应该在服务器上实现哪种端点?它是否会每次重新发行另一个令牌,使旧的令牌失效?何时应该进行刷新调用?

2)我读过有关使用永不过期的刷新令牌的信息,但我无法真正找到示例实现,或如何在自定义身份验证场景中实现它的说明,有人可以指出我正确的方向吗?

提前谢谢了


我是否应该调用 MobileServicesClient.RefreshUserAsync()?如果是,我应该在服务器上实现哪种端点?它是否会每次重新发行另一个令牌,使旧的令牌失效?何时应该进行刷新调用?

我检查了方法RefreshUserAsync from Microsoft.WindowsAzure.Mobile.dll这将发送一个 get 请求/.auth/refresh用于为您的登录用户刷新访问令牌的端点。由于您使用的是自定义身份验证,因此无法使用此方法来刷新authenticationToken.

我读过有关使用永不过期的刷新令牌的信息,但我找不到示例实现,也找不到有关如何在自定义身份验证场景中实现它的说明,有人可以指出我正确的方向吗?

当使用CreateToken方法来自应用服务登录处理程序 https://github.com/Azure/azure-mobile-apps-net-server/blob/master/src/Microsoft.Azure.Mobile.Server.Login/AppServiceLoginHandler.cs,您可以指定lifetime as null,那么你会检索到一个永不过期的authenticationToken如下:

JwtSecurityToken token = AppServiceLoginHandler.CreateToken(claims, signingKey, audience, issuer,null);

此外,您可以尝试构建端点以基于旧的有效令牌创建新令牌,如下所示:

[Route(".auth/login/customRefreshToken")]
public IHttpActionResult RefreshToken([FromBody] RefreshTokenInput body)
{
    string tokenString = body.AuthenticationToken;
    try
    {
        var jwtSecurityToken = new JwtSecurityToken(tokenString);
        JwtSecurityToken token = AppServiceLoginHandler.CreateToken(jwtSecurityToken.Claims, signingKey, audience, issuer, TimeSpan.FromDays(30));
        return Ok(new LoginResult()
        {
            AuthenticationToken = token.RawData
        });
    }
    catch (Exception e)
    {
        return BadRequest("$Error = {e.Message}, StackTrace = {e.StackTrace}");
    }
}

Note:对于您的移动客户端,您可以使用MobileServiceClient.InvokeApiAsync用于检索新令牌,然后解析authenticationToken并将其更新为MobileServiceClient.CurrentUser.MobileServiceAuthenticationToken.

RESULT

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

Azure MobileApp 自定义身份验证、刷新令牌 的相关文章

随机推荐

  • 更强大的点版本(重复)

    我知道如何录音q到寄存器中 但我想知道是否可以设置一些东西来快速调用最后一个录音 就像 调用最后一个简短的编辑命令 参见here https stackoverflow com questions 12566235 what can the
  • 正则表达式匹配具有两个或多个特殊字符的强密码

    我需要使用 javascript 正则表达式匹配密码字段 并满足以下要求 至少 15 个字符 两个或多个小写字母 两个或多个大写字母 两位或更多数字 以下两个或多个特殊字符 我有一个正则表达式可以处理大多数情况 15 2 d 2 a z 2
  • phpmyadmin 令牌不匹配导致长时间闲置

    我安装了phpMyAdmin 4 0 4 1在我本地的开发环境中 我设置了auth type to config 我还通过此设置提供身份验证要求 cfg Servers i auth type config cfg Servers i ho
  • Google Chrome 强制下载“f.txt”文件

    更新到 Chrome 40 0 2214 111 后 当我访问某些 Google 相关网站 例如http youtube com http youtube com并在视频之前看到广告 浏览器下载一个名为f txt 我没有安装任何 adblo
  • 未找到符号:_libintl_gettext

    我正在尝试使用 C 创建一个 NodeJS 模块node gyp 该软件包依赖于 GNU 的 Gettext 库 我目前使用的是 Mac OS X Mountain Lion 我尝试过通过手动 Homebrew 甚至 Fink 自己安装该软
  • Apple 的 iMessage 模板或向现有应用程序添加扩展之间有什么区别?

    我注意到 iOS 10 消息应用程序的创建有所不同 如果您使用创建一个新项目iMessage Application选择新项目的模板 Xcode 将创建两个目标 一个应用程序和一个扩展 但该项目无法运行 从第二张图片可以看出 底部的目标选择
  • 虚拟继承是否强制基类默认可构造?

    在下面的代码中 编译器正在请求基址class X to be 默认可构造 但是 如果我删除virtual来自继承的关键字类节点 会员的访问权限m x当然 变得含糊不清 但是默认构造函数 for class X不再需要 这是什么原因呢 inc
  • Facebook Open Graph:将网站与 Facebook 页面关联

    我想在我的 Facebook 页面和我的网站之间建立关系 我已经设置了它们 并将 OG 标签添加到网站中 然而 Facebook 页面和我的网站之间似乎没有任何联系 这fb admin标签设置为我的 Facebook 用户 ID 但我想与我
  • ANTLR 歧义问题

    我有这个语法 grammar MyGrammar prog lexeme lexeme TOK INTLIT 0 9 Identifiers Letter Letter Digit fragment Letter a zA Z fragme
  • ASP.NET 会员注册问题

    我在会员资格方面遇到了困难 好吧 这真的很奇怪 我可以注册一个用户 我可以注册 我可以登录 但是 当我去注册另一个用户时 该用户没有保存在数据库中 我得到了一个 当用户尝试登录时 会员凭证验证失败事件 我假设是因为用户从未被保存 这是我用来
  • 将 Java 回调函数传递给 JSNI 方法?

    我想将成功和失败回调 Java 函数传递给 JSNI 方法 这是我到目前为止所得到的 但它不起作用 我该如何修复它 package c public class A test new Callback
  • 如何清除 ttk.Treeview 小部件中的项目?

    ing scroll Scrollbar window1 frame1 orient VERTICAL ingredients ttk Treeview window1 frame1 yscrollcommand ing scroll se
  • 当我打开模式时添加下一个和上一个按钮

    我是新手 我想问您是否可以帮我将下一个和上一个按钮添加到我的模式中 这些图片不是画廊形式的 我是添加 div 还是像这样添加一些 javascript 你能推荐一些吗 var modal document getElementById my
  • 带标题的多个图像文件上传

    我设法得到了字幕foreach循环但现在我面临一个新问题 由于嵌套循环 我的数据库中出现重复项 请检查下面的代码 JavaScript window onload function if window File window FileLis
  • Python Tkinter,使用循环设置按钮回调函数

    我正在编写一个显示按钮网格的程序 当按下按钮时 我希望它将网格中按钮的位置 行列 打印到控制台 这是我所拥有的 import Tkinter as tk class board tk Tk def init self parent None
  • DateFormatter 返回错误的时间[重复]

    这个问题在这里已经有答案了 我对 Date 进行了扩展 返回格式化字符串 extension Date var myFormattedDate String let formatter DateFormatter formatter tim
  • 变量===未定义与typeof变量===“未定义”

    The jQuery 核心风格指南 https contribute jquery org style guide js type checks建议两种不同的方法来检查变量是否已定义 全局变量 typeof variable undefin
  • jQuery UI 可排序动画

    我有一个类似网格的列表 并且按照计划在其中运行可排序功能 我想为每个项目设置动画 除了被操纵以在列表中平滑滑动的项目之外 我在这里设置了一个示例 http jsfiddle net wpmte http jsfiddle net wpmte
  • Vue.js 强制重新渲染包含 v-once 指令的组件

    Vue 2 0 我有一个包含 div 的组件 使用v once防止重新渲染的指令 当 URL 参数更改时 即单击 vue router 链接 更改组件中使用的 url 和参数 该组件会更新它显示的数据 该组件成功地使用新数据重新渲染所有内容
  • Azure MobileApp 自定义身份验证、刷新令牌

    我需要我的应用程序支持针对我们的私人数据库的自定义身份验证 并遵循此处 Adrian Hall 书中的建议https adrianhall github io develop mobile apps with csharp and azur