c# - 如何请求访问代码和令牌 C# Oath2.0
问题描述
示例 URL: https ://test.test.com/services/data,\n
当我单击请求令牌时,我会弹出一个窗口以使用用户名,密码登录。然后在 1 次 OTP 验证后不再需要它。最后使用令牌并使用原始正文数据,我获取 url 并返回 200 状态代码。如何以编程方式在 c# 中执行请求令牌部分?
就我获得 Oath2.0 而言,它为身份验证代码获取 URL => 使用该代码获取访问令牌 => 最后使用带有令牌的 post url 工作。
当我在邮递员中单击代码时,它为 C# - RestSharp 生成代码。现在这是令牌已经存在的情况。请求令牌部分也有相同的东西吗?
使用生成的代码,我可以看到如下内容:
request.AddHeader("Cookie", "BrowserId=RtFiu8ysE; BrowserId_sec=RtFiu8y; rememberUn=true; login=c3Jpc3JpLm; com.xxxxxxxx.LocaleInfo=us; oinfo=xxxxxxxxx=; autocomplete=1; oid=xxxxxxxxx; webact=%7B%22l_vdays%22%3A1%2C%22l_visit%22%3A1xxxxxxxxx3%2C%22session%22%3Axxxxxxxxx448%2C%22l_search%22%3A%22%22%2C%22l_dtype%22%3A%22%22%2C%22l_page%22%3A%22SFDC%3Aus%3Alogin%3Adeveloper%22%2C%22counter%22%3A3%2C%22pv%22%3A1%2C%22f_visit%22%3Axxxxxxxxx682%2C%22seg%22%3A%22non-customer%3Aus%22%2C%22developer%22%3Axxxxxxxxx43%7D; sfdc_lv2=xxxxxxxxxnx/Slxxxxxxxxxg+aoxxxxxxxxxJmq/6lDwolM=");
因此,对于 browserId、login、oinfo、oid 等这些值,我将如何进入 c#?
基本上,这是如何工作的?像获取身份验证代码一样,我需要进行 httprequest 吗?我应该先点击哪个网址?回调或授权?根据他们的文档:他们说要获取:https://xxx.xxx.com/services/oauth2/authorize? client_id=xxxxxxx& redirect_uri=https://www.xxxxxx.com/oauth2/callback& response_type=code
然后
https://www.xxxxx.com/oauth2/callback? code=tesauthcodexxxx
接着
POST /services/oauth2/token HTTP/1.1 Host: xxxxx.xxxxxxxx.com Content-length: 307 Content-type: application/x-www-form-urlencoded grant_type=authorization_code& code=xxxxxxx& client_id=xxxxxxx& client_secret=*******& redirect_uri=https://www.xxxxxx.com/oauth2/callback
我检查了许多使用 Oath2.0 的帖子,但他们到处都说他们已经有了令牌 [但是如何获得授权码]。
我是 Oath2.0 的新手。我知道我在理解概念方面缺少很多东西,但有时交付与新人有关。对不起,很长的帖子。
解决方案
根据身份验证服务器的支持(但我假设它们完全符合 OATH2),请查看The IdentityModel Package for C#。这将为您节省大量尝试自己重新发明轮子的时间。使用给定的文档,您可以在几分钟内启动并运行它。
推荐阅读
- amazon-web-services - AWS 通配符子域 - 不同服务提供商的父域
- elasticsearch - 电子商务项目中的全局搜索:Elastic Nest
- android - 如何使用 Retrofit 库将 X-API-Key 和 X-Session 添加到标头?
- android - 当新添加的数据已经存在时如何显示警报对话框
- javascript - 无法对 Interval 函数中未安装的组件问题执行 React 状态更新
- javascript - 如何在javascript中设置大写字母与小写字母相同?
- button - 背景似乎在 SwiftUI 中的按钮上方。我做错了吗
- php - 回显时不显示会话信息/数据
- scala - 使用泛型的 Doobie 批量更新
- node.js - 如何使用 MongoDB 检查未更改或未记录的字段?