区块链技术博客
www.b2bchain.cn

尝试通过Node JS设置API Management REST API身份验证 – javascript程序员分享

本文介绍了尝试通过Node JS设置API Management REST API身份验证 – javascript程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我的目标是使用Azure API管理API对Node.js客户端进行身份验证。

我在将这个C#示例转换为Node.js Javascript时遇到了一些麻烦。我已经使用自己的ID和密钥测试了C#示例,并且似乎已使用API​​对200进行了身份验证,但是我的Node.js代码段中始终显示401

我觉得这可能与C#示例格式化格式为Format Specifier的到期(ex={1:o})的方式有关

C#示例

来源:Azure API Management REST API Authentication

using System;    using System.Text;    using System.Globalization;    using System.Security.Cryptography;     public class Program    {        public static void Main()        {            var id = "12345678abcdefgh";            var key = "1234abcd5678asdf==";            var expiry = DateTime.UtcNow.AddDays(10);            using (var encoder = new HMACSHA512(Encoding.UTF8.GetBytes(key)))            {                var dataToSign = id + "n" + expiry.ToString("O", CultureInfo.InvariantCulture);                var hash = encoder.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));                var signature = Convert.ToBase64String(hash);                var encodedToken = string.Format("SharedAccessSignature uid={0}&ex={1:o}&sn={2}", id, expiry, signature);                Console.WriteLine(encodedToken);            }        }    } 

我的Node.js代码段

var util = require('util') var crypto = require('crypto') var generateAccessCode = function() {     var id = "1234asdf1234asdf";     var key = "1234asdf1234ghjk";     const accessCodeExpireDays = 10;     const formatString = 'SharedAccessSignature uid=%s&ex=%s&sn=%s'     const dataToSignString = '%sn%s';      //create expiry string     var today = new Date();     var expiry = new Date();     expiry.setDate(today.getDate() + accessCodeExpireDays);     expiry = expiry.toISOString();      //create hash     var dataToSign = util.format(dataToSignString, id, expiry)     const hash = crypto.createHmac('sha512', key)         .update(dataToSign)         .digest('base64');      var encodedToken = util.format(formatString, id, expiry, hash);      console.log(encodedToken) }  generateAccessCode() 

javascript参考方案

您可能需要通过Moment.js如下设置到期日期的格式:

//create expiry string var today = new Date(); var expiry = new Date(); expiry.setDate(today.getDate() + accessCodeExpireDays); expiry = moment(expiry).format('YYYY-MM-DD[T]HH:mm:ss.SSSSSSS[Z]') 

在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _POST表单数据?我想象过程的方式:提交->收集$ _POST数据->发送数据我想做的事:提交->收集$ _POST数据->删除某些元素->发送数据这样就不必更改处理页面以过滤掉不希望接收的元素了吗? javascript大神给出的解决方案 当然可以,您可以在JS …

我正在使用数组来显示网站中的一些图像:var paintingImages; paintingImages = [ { url: 'images/objects/ron.jpg', alt: 'ron' } ]; 该js代码写在paintings.js中,我的主要js代码写在main.js文件中我已经为艺术家制作了这个…

我想建立一个网页,该网页通过Javascript API进行许多Facebook状态更新,并将它们分类到一个数组中。然后,我想将此数组发送到Python脚本,该脚本可以专门使用NLTK.进行语言分析。在Python中获得合适的结果后,我想将结果从该脚本返回到Javascript,以显示给用户等。听起来可能吗? javascript大神给出的解决方案 是的,完…

打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…

我是Web开发的初学者,可以访问cpanel上托管的网站,并且需要对其进行一些更改。这个网站的后端是由蛋糕PHP制作的,我想使用ajax从客户端将一些数据插入其数据库。问题是我不知道如何获取负责插入数据库的PHP文件的URL。参见下面的代码:var xhttp = newXMLHttpRequest(); xhttp.onreadystatechange= …

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 尝试通过Node JS设置API Management REST API身份验证 – javascript程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们