【发布时间】:2021-08-26 08:07:05
【问题描述】:
在 C# .NET Windows 应用程序中,从正在运行的 NodeJS 服务器获取 jwt 令牌的最佳方式是什么? 在 .NET 中,我使用 HttpClient 连接到 oauth2 服务器(并且成功),但是如何获得非常 jwt 令牌?
在 NodeJS 中:
const express = require('express')
const https = require('https');
const axios = require('axios');
var url = require('url');
const app = express()
const port = 3000
const agent = new https.Agent({ rejectUnauthorized: false });
async function get_token() {
try {
let url = "https://oauthservername/token.oauth2";
let formfields = "client_id=cid&grant_type=password&validator_id=ourAuthNG&client_secret=secretstring&username=billy&password=xxxxxxxxx";
let response = await axios.post(url, formfields, { httpsAgent: agent });
console.log(response.data);
} catch (error) {
console.log(error);
}
}
app.get('/token', (req, res) => {
get_token();
res.send('Eureka!');
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
这是有效的。我在 Postman 以及我的 .NET HttpClient 调用中得到了“Eureka!”
在我的控制台中,我得到了(x-ing 原始信息...),(console.log(response.data) 的输出;)
{
access_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
refresh_token: 'xxxxxxxxxxxxxxxxx',
token_type: 'Bearer',
expires_in: 28799
}
所以,在我的 C# 代码中我这样做(也得到“Eureka!”,我在 responseBody 中看到它):
private async void cmdConnectServer_Click(object sender, EventArgs e)
{
//client is HttpClient
client.BaseAddress = new Uri("http://localhost:3000/");
HttpResponseMessage response = await client.GetAsync("http://localhost:3000/token");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
}
但是如何获得令牌呢?
【问题讨论】:
标签: node.js .net axios postman