asp.net-mvc - 使用 MVC 5 创建 OAuth2.0 登录应用程序
问题描述
我需要你的帮助....我需要一些代码来让我开始使用我正在工作的应用程序。我有一个 MVC5 应用程序,它将用户登录到规划中心,然后重定向回我的网站以执行一些任务。手头的问题是我很难理解如何使用 OAuth 2.0 规范对用户进行身份验证。下面提供了规划中心为了让我登录和使用他们的 API 所需的详细信息:
1.将用户浏览器重定向到https://api.planningcenteronline.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=https://example.com/auth/complete&response_type=code&scope=peoplereplace CLIENT_ID 和https://example.com/ auth/complete与您的实际重定向 URI)。如果您需要不同的范围,请适当地替换 scope=people(请参阅下面的“范围”部分)。
2.Planning Center 将使用代码参数将用户的浏览器重定向回给定的重定向 URI。
3.在后台向https://api.planningcenteronline.com/oauth/token发送POST请求,参数如下:{"grant_type": "authorization_code", "code": "CODE_FROM_STEP_2", "client_id": " CLIENT_ID”、“client_secret”:“CLIENT_SECRET”、“redirect_uri”:“https://example.com/auth/complete”}
(适当地替换 CLIENT_ID、CLIENT_SECRET、CODE_FROM_STEP_2 和重定向 URI)。curl -X POST https://api.planningcenteronline.com/oauth/token
-F grant_type=authorization_code
-F code=1234567890
-F client_id=
2345678901 -F client_secret=3456789012
-F redirect_uri=https://example.com/auth /完全的
您返回的响应将包含访问令牌和其他信息。{ "access_token": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "token_type": "bearer", "expires_in": 7200, "refresh_token": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "scope": "people", "created_at": 1469553476 }
通过使用承载身份验证方案将访问令牌传递到授权标头中,将访问令牌用于所有 API 请求。curl -H '授权:承载 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' https://api.planningcenteronline.com/people/v2/people
有关文档的完整链接 - https://developer.planning.center/docs/#/introduction/authentication
我只需要开始,我不确定在哪里。那里的大多数示例都很难理解,并且没有提供足够的细节。
任何帮助将不胜感激。
先感谢您。
解决方案
在授权代码流程中,您需要发出两个请求才能从授权服务器获取令牌。第一个用于要求用户登录的授权端点。成功登录后,客户端将从授权服务器取回一个代码,因此名称为授权代码流,用于对令牌端点的第二次请求。通过发送有效代码,服务器将发送带有访问令牌的响应,以便您可以使用它访问受保护的资源。
您可以从 auth0 网站中的序列图获取更多信息: https ://auth0.com/docs/flows/authorization-code-flow
推荐阅读
- android - 如何将数据从片段传递到视图寻呼机内的另一个片段?
- python-3.x - 有没有更快的方法来使用高斯函数计算同一矩阵中元素之间的距离?
- node.js - Redis Node JS - 存储同一类的多个对象
- java - 是否有 JCEF 的 URL 更改侦听器
- python - 我正在尝试使用 pd.read_csv() 将文件加载到 Python 中,但我无法理解文件的格式
- sql - 将 3 个 UNIONed 查询合并为一个
- python - 向 Cloud Run 上的已部署服务发送请求时 Tableau 登录错误
- ruby-on-rails - 使用 webpack 和 rails 导入 Bootstrap 4 标签输入
- sql - Oracle 递归滞后函数
- c++ - 在 C++ 中读取文件时如何解决此问题?