当前位置: 首页 > 知识库问答 >
问题:

passport-azure-ad:前端和后端具有相同的标记(什么策略,如何实现?)

阎丰羽
2023-03-14
    null

我想用“Passport-Azure-AD”,但我不知道该怎么做?OIDCStrategy还是BearerStrategy?

我可以轻松地使用OIDCStrategy进行前端登录,但我没有“承载者”,所以我不明白如何使用相同的“登录”来调用后端API?使用BearerStrategy,我尝试通过获取'https://login.microsoftonline.com/'+myTenantid+'/oauth2/v2.0/authorize?response_type=code&client_id='+myClientId+'&redirect_uri=HTTP%3a%2f%2flocalhost%3a3000%2fCallback&scope=openid'来获取承载,但每次当我在jwt.io上测试它时,它都作为无效承载返回(“无效签名”),并且我不能在后端服务器中使用该承载。

我有点困惑怎么办?我需要帮助。

谢谢

共有1个答案

郭琦
2023-03-14

如本文所示,您可以进行HTTP调用以获取访问令牌。你可以和邮差一起试试。

在node.js中使用代表流:

var qs = require("querystring");

var http = require("https");

var options = { "method": "POST", "hostname": [ "login", "microsoftonline", "com" ], "path": [ "b2bc09c8-9386-47xxxxxxxx", "oauth2", "token" ], "headers": { "Content-Type": "application/x-www-form-urlencoded", "cache-control": "no-cache", "Postman-Token": "739540c9-1e3d-4d74-bxxxxxxx" } };

var req = http.request(options, function (res) { var chunks = [];

res.on("data", function (chunk) {
    chunks.push(chunk);
});

res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
});
});

req.write(qs.stringify({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', client_id: '<your-application-id>', resource: 'https://graph.microsoft.com/', client_secret: '<your-client-secret>', scope: 'openid', assertion: 'xxxxx', requested_token_use: 'on_behalf_of', undefined: undefined })); 
req.end();

您可以提取访问令牌并将其用于承载请求中的资源。

 类似资料:
  • Q 1>这里我应该使用哪种策略? 2>什么时候我们应该使用一种策略而不是另一种策略?

  • 什么应该是我的JWT身体的一部分?我在想uid和提供者提供了访问令牌。我在这里可以想到的一个问题是,提供程序特定的访问令牌可以更改。用户可以从提供商的站点撤消令牌,并再次使用emberjs注册。 我愿意在任何其他javascript客户端框架中编写前端,如果它使它更容易的话。

  • 在前端,我通过登录流和auire令牌使用 然后向passport-azure-ad承载策略保护的endpoint发出请求,得到 我也在库里做了日志记录,上面写着: 我很困惑我现在该做什么,所以任何帮助都将非常感谢!

  • 簇是在“我的地图”上创建的,但当标记具有相同的地址时,单击簇时,工具提示不会显示。我正在使用Gmaps标记聚类器。代码示例:`function initMap(){//map options var options={zoom:7,center:{lat:53.3938131,lng:-7.858913}}}var map=new google.maps.map(document.getEleme

  • 我想知道是否有任何方法可以告诉我具有相同标记名称、文本和类(如果有)的元素与具有相同标记名称、文本和相同类(如果有)的其他元素不同。为了澄清,请考虑以下超文本标记语言片段: 现在在上面的代码中,我如何使用div标签和text将两个元素分开。另请注意,这里的两个元素没有id。 上面的例子非常简单,但实际情况可能更复杂。因此,如果您好心地向我提出一个概括的答案,我将不胜感激。谢谢。

  • 问题内容: Prevayler保证所有写入(通过其事务)都是同步的。但是读呢? 如果不使用显式同步(在用户代码中),可以进行脏读吗? 如果将业务对象读取为: ? 如果是这样,哪种同步策略对用户代码有利? (考虑业务对象A包含业务对象Bs的集合), 使用同步集合(A中B的集合),例如从java.util.concurrent包中? 同步外部事务的集合读取与内部事务的集合写入,例如在读写之间使用“ s