【发布时间】:2018-08-16 04:26:21
【问题描述】:
我确信已经有人这样做了,但是我还没有找到任何关于 Microsoft 实现 JWT 的文档。 Microsoft 为其 JWT 库提供的官方文档基本上是一个空白页面,请参阅:
https://docs.microsoft.com/en-us/dotnet/framework/security/json-web-token-handler-api-reference
所以,这就是我(我相信还有很多其他人)想要完成的事情:
定义: 用户 ID = 用于登录系统的用户名或电子邮件地址。
身份验证:
-
用户登录。用户填写 Web 表单,系统将(通过 HTTPS POST)用户 ID 和密码(散列)发送到服务器,以验证/验证用户。
服务器对用户进行身份验证。根据保存在数据库中的值检查用户 ID 和密码,如果无效,则向调用者返回无效的登录响应。
创建 JWT 令牌 - ????没有可用的文档!
将 JWT 令牌返回给调用者 - ???? - 我假设在标题中?通过 JSON,不确定 - 再次 - 没有文档。
鉴于下面的代码,谁能提供第 3 步和第 4 步的代码示例?
[FunctionName( "authenticate" )]
public static async Task<HttpResponseMessage> Run( [HttpTrigger( AuthorizationLevel.Anonymous, "get", "post", Route = null )]HttpRequestMessage req, TraceWriter log )
{
// Step 1 - Get user ID and password from POST data
/*
* Step 2 - Verify user ID and password (compare against DB values)
* If user ID or password is not valid, return Invalid User response
*/
// Step 3 - Create JWT token - ????
// Step 4 - Return JWT token - ????
}
授权:
假设用户已通过身份验证并且现在拥有 JWT 令牌(我假设 JWT 令牌保存在用户会话中;如果有人想提供更多信息,请提供):
向 Azure 函数发出 POST 请求以执行某些操作(例如获取用户的出生日期)。上面获得的 JWT 令牌与函数所需的任何其他数据一起加载(从 POST 数据或标头 - 这有关系吗?)。
JWT 令牌已验证 - ????没有可用的文档!
如果 JWT 令牌无效,则函数返回 BadRequest 响应。
如果 JWT 令牌有效,则函数使用传递给它的数据来处理并发出响应。
鉴于下面的代码,任何人都可以提供第 1 步和第 2 步的代码示例吗?
[FunctionName( "do_something" )]
public static async Task<HttpResponseMessage> Run( [HttpTrigger( AuthorizationLevel.Anonymous, "get", "post", Route = null )]HttpRequestMessage req, TraceWriter log )
{
// Step 1 - Get JWT token (from POST data or headers?)
// Step 2 - Validate the JWT token - ???
// Step 3 - If JWT token is not valid, return BadRequest response
// Step 4 - Process the request and return data as JSON
}
任何和所有信息都会真正帮助我们这些人(我)了解如何将 JWT 与 Azure(匿名)函数一起使用,以构建“安全”的 REST API。
提前致谢。
【问题讨论】:
标签: azure jwt azure-functions