将不记名令牌发送到端点,然后验证此令牌
Sending a bearer token to endpoint, then validate this token
如果我有一个将一些数据发送到端点的方法,我知道我应该使用不记名令牌来验证此调用,在请求的 header 中发送。
说我的方法 sends/receives 数据 to/from 端点看起来像这样:
public async Task<string> PostGetAsync()
{
var uri = new Uri("https://localhost:44322/endpoint");
using (var client = new HttpClient())
{
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Key", "Value")
};
var content = new FormUrlEncodedContent(pairs);
var response = await client.PostAsync(uri, content);
if (response.StatusCode != HttpStatusCode.OK)
{
return "Error posting KeyValue";
}
string responseString = response.Content.ReadAsStringAsync().Result;
JArray json = JArray.Parse(responseString);
try
{
var returnedJson = json[returnedData];
return returnedJson.ToString();
}
catch (Exception e)
{
return "Index is out of bounds";
}
}
}
当该端点被调用时运行的方法是这样的:
public async Task<JsonResult> endpoint()
{
List<Example> items = new List<Example>();
NameValueCollection nvc = Request.Form;
string keyString = nvc["Key"];
try
{
items = await GetService.GetList(keyString);
}
catch (ServiceException se)
{
}
return Json(items, JsonRequestBehavior.AllowGet);
}
我如何:
- 将不记名令牌(自定义存储在 azure keyvault 中)发送到端点。
- 从端点验证此令牌
我找不到任何初学者友好的文档来执行此操作。
发送不记名令牌就像向表单请求添加 HTTP Header 一样简单:Authorization: Bearer YOURTOKEN
。您可以像这样在 C# 中执行此操作:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", yourTokenString);
// .. rest of your code
对于服务器端点,您不太清楚希望如何验证令牌。你提到了 Azure KeyVault 但没有说你用它做什么。
通常服务器通过检查它们的签名来验证传入的令牌。此检查需要知道一个秘密。 Azure KeyVault 是您可以存储该机密的地方。
通常,您使用令牌验证配置服务器框架一次(而不是每个端点)。然后您只需指出哪些端点需要令牌验证。
有许多指南贯穿整个过程。这里有一对:
https://blogs.msdn.microsoft.com/webdev/2016/10/27/bearer-token-authentication-in-asp-net-core/
https://goblincoding.com/2016/07/03/issuing-and-authenticating-jwt-tokens-in-asp-net-core-webapi-part-i/
如果这还不够,那么您应该 post 关于您的用例和您所知道的更多具体信息。
如果您使用的是 .Net Core,请查看以下库:
- 服务器端:https://identityserver4.readthedocs.io/en/latest/。在这里你会找到非常详细的描述如何配置你的身份验证服务,身份验证后将生成令牌的服务。
- 客户端:https://identitymodel.readthedocs.io/en/latest/。在这里你会找到处理所有客户端问题的框架,比如获取令牌、请求注入、自动续订......几乎几行配置,你将所有令牌管理抽象到 identitymodel 框架..
如果我有一个将一些数据发送到端点的方法,我知道我应该使用不记名令牌来验证此调用,在请求的 header 中发送。
说我的方法 sends/receives 数据 to/from 端点看起来像这样:
public async Task<string> PostGetAsync()
{
var uri = new Uri("https://localhost:44322/endpoint");
using (var client = new HttpClient())
{
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("Key", "Value")
};
var content = new FormUrlEncodedContent(pairs);
var response = await client.PostAsync(uri, content);
if (response.StatusCode != HttpStatusCode.OK)
{
return "Error posting KeyValue";
}
string responseString = response.Content.ReadAsStringAsync().Result;
JArray json = JArray.Parse(responseString);
try
{
var returnedJson = json[returnedData];
return returnedJson.ToString();
}
catch (Exception e)
{
return "Index is out of bounds";
}
}
}
当该端点被调用时运行的方法是这样的:
public async Task<JsonResult> endpoint()
{
List<Example> items = new List<Example>();
NameValueCollection nvc = Request.Form;
string keyString = nvc["Key"];
try
{
items = await GetService.GetList(keyString);
}
catch (ServiceException se)
{
}
return Json(items, JsonRequestBehavior.AllowGet);
}
我如何:
- 将不记名令牌(自定义存储在 azure keyvault 中)发送到端点。
- 从端点验证此令牌
我找不到任何初学者友好的文档来执行此操作。
发送不记名令牌就像向表单请求添加 HTTP Header 一样简单:Authorization: Bearer YOURTOKEN
。您可以像这样在 C# 中执行此操作:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", yourTokenString);
// .. rest of your code
对于服务器端点,您不太清楚希望如何验证令牌。你提到了 Azure KeyVault 但没有说你用它做什么。
通常服务器通过检查它们的签名来验证传入的令牌。此检查需要知道一个秘密。 Azure KeyVault 是您可以存储该机密的地方。
通常,您使用令牌验证配置服务器框架一次(而不是每个端点)。然后您只需指出哪些端点需要令牌验证。
有许多指南贯穿整个过程。这里有一对:
https://blogs.msdn.microsoft.com/webdev/2016/10/27/bearer-token-authentication-in-asp-net-core/ https://goblincoding.com/2016/07/03/issuing-and-authenticating-jwt-tokens-in-asp-net-core-webapi-part-i/
如果这还不够,那么您应该 post 关于您的用例和您所知道的更多具体信息。
如果您使用的是 .Net Core,请查看以下库:
- 服务器端:https://identityserver4.readthedocs.io/en/latest/。在这里你会找到非常详细的描述如何配置你的身份验证服务,身份验证后将生成令牌的服务。
- 客户端:https://identitymodel.readthedocs.io/en/latest/。在这里你会找到处理所有客户端问题的框架,比如获取令牌、请求注入、自动续订......几乎几行配置,你将所有令牌管理抽象到 identitymodel 框架..