我正在尝试使用 JWT 来保护用 C# 编写的 WEB API,但我对一些事情感到困惑。根据我的理解,流程应该是这样的:

  • 客户端从某些客户端应用程序(Angular、.NET、Mobile 等)向 Web API 提供用户名/密码
  • Web API 验证用户名/密码是否正确,然后生成包含用户角色、信息、到期日期和其他相关信息的 JWT(JSON Web Token)。
  • JWT 被发送回客户端应用程序。
  • 客户端应用程序卡在 JWT 上,并将其与 future 的请求一起发送。

  • 假设上述内容是正确的(如果不正确,请告诉我),我在理解以下内容时遇到了困难。
  • 一旦 Web API 验证了用户名/密码并创建了 JWT,JWT 如何传回?我是否以某种方式将它添加到 HttpResponseMessage 对象?我似乎无法找到明确的答案。
  • 客户端应用程序应该如何将 JWT 传回?这是在 JSON 数据中,附加到 URL,添加到标题吗?
  • 我看到很多引用 OWIN 和 OAUTH 的教程。这些是什么,为什么我需要它们?我持有 WEB API 使用的数据库中的用户凭据和角色。
  • 最佳答案



    通常的做法是成功,来自服务的响应在响应头中包含状态码 200 OK,在响应体中包含 token 相关数据

    200 OK
    Content-Type: application/json;charset=UTF-8
    
    {
        "access_token": "NgCXRK...MzYjw",
        "token_type": "Bearer",
        "expires_at": 1372700873,
        "refresh_token": "NgAagA...Um_SHo"
    }
    



    使用访问 token 发出经过身份验证的请求

    现在您有了一个 token ,您可以向 API 发出经过身份验证的请求。这是通过根据服务器的配置方式在请求中设置 HTTP Authorization header 或查询字符串来完成的。

    在标题中

    Authorization: Bearer NgCXRK...MzYjw
    

    作为参数

    GET http://localhost:35979/v2/endpoint?access_token=NgCXRK...MzYjw
    



    OWIN — .NET 的开放 Web 界面 http://owin.org/



    OWIN OAuth 2.0 Authorization Server

    关于c# - 如何在 C# WEB API 中返回 JSON Web token ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38938406/

    10-11 19:58
    查看更多