我确定那里已经有人做过,但是我还没有找到有关JWT的Microsoft实现的任何文档。 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。提前致谢。 最佳答案 任何信息都将真正帮助我们这些人(我)了解如何将JWT与Azure(匿名)功能一起使用,以构建“安全的” REST API。根据我的理解,您可以在azure函数代码中使用相关的库来生成/验证JWT令牌。以下是一些教程,您可以参考它们:Create and Consume JWT Tokens in C#。Jwt.Net, a JWT (JSON Web Token) implementation for .NETJWT Authentication for Asp.Net Web Api此外,您可以利用App Service Authentication / Authorization来配置功能应用程序级别的身份验证/授权。您可以转到“功能应用程序设置”,单击“平台功能”选项卡下的“网络>身份验证/授权”。启用App Service身份验证,然后选择“允许匿名请求(无操作)”,如下所示:您可以创建具有匿名访问权限的HttpTrigger函数来记录用户,如果用户存在,则返回JWT令牌。对于受保护的REST API,您可以按照以下代码示例进行操作:if(System.Security.Claims.ClaimsPrincipal.Current.Identity.IsAuthenticated){ //TODO: retrieve the username claim return req.CreateResponse(HttpStatusCode.OK,(System.Security.Claims.ClaimsPrincipal.Current.Identity as ClaimsIdentity).Claims.Select(c => new { key = c.Type, value = c.Value }),"application/json");}else{ return req.CreateResponse(HttpStatusCode.Unauthorized,"Access Denied!");}为了生成在App Service Authentication中使用的JWT令牌,您可以遵循How to: Use custom authentication for your application和adrian hall的关于Custom Authentication的书中自定义API控制器CustomAuthController下的代码来创建JWT令牌。更新:对于App Service Authentication下的自定义身份验证方法,我只希望op利用EasyAuth提供的身份验证/授权。我对此方法进行了一些测试,发现它可以对我有效。 Op可以将用户名和密码发送到HttpTrigger进行身份验证,然后HttpTrigger后端需要验证用户信息,并使用Microsoft.Azure.Mobile.Server.Login包向客户端颁发App Service Authentication令牌,然后客户端可以从属性。针对受保护的API的后续请求可能如下所示:https://<your-funapp-name>.azurewebsites.net/api/<httpTrigger-functionName>Header: x-zumo-auth:<AuthenticationToken>注意:对于这种方法,相关的HttpTrigger函数需要允许匿名访问,并且App Service Authentication还需要选择“允许匿名请求”(无操作)。否则,App Service身份验证和功能级别身份验证将同时验证请求。对于受保护的API,op需要手动添加AuthenticationToken检查。关于azure - 结合使用具有Azure功能的JSON Web token (JWT)(不使用Active Directory),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49162583/ 10-16 08:30