【问题标题】:Get the access token in asp.net web forms在 asp.net 网络表单中获取访问令牌
【发布时间】:2017-05-01 17:58:40
【问题描述】:

我想获取访问令牌以在我的 Web 表单应用程序中调用一些 api,但我想说应用程序已经是一个大项目,我不想使用任何库,我只想单击一个按钮,输入名称/密码,并获取访问令牌,我要做的就是在页面代码中,没有其他任何可能影响整个项目的东西,例如安装库。

【问题讨论】:

  • :哥们,请开始学习API和访问令牌。你会明白的。这不像是一份小工作。

标签: c# azure-active-directory


【解决方案1】:

代表用户获取 Azure Active Directory 的访问令牌只需要您遵循授权代码授予流程。

虽然我们的库使这非常容易实现 (see here),但它们绝对不是必需的。

在此处了解 OAuth 2 协议:Authorize access to web applications using OAuth 2.0 and Azure Active Directory

内容的简短总结是:

  1. 注册 AAD 应用程序
  2. 让用户使用包含有关您的应用程序身份信息的特定登录 url 登录到您的应用程序。

    https://login.microsoftonline.com/{tenant}/oauth2/authorize? client_id=6731de76-14a6-49ae-97bc-6eba6914391e &response_type=code &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F &response_mode=query &resource=https%3A%2F%2Fservice.contoso.com%2F &state=12345

  3. 这将向重定向 URI 返回一个授权代码,您需要用它来交换访问令牌:

    POST /{tenant}/oauth2/token HTTP/1.1 Host: https://login.microsoftonline.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code &client_id=2d4d11a2-f814-46a7-890a-274a72a7309e &code=AwABAAAA... &redirect_uri=https%3A%2F%2Flocalhost%2Fmyapp%2F &resource=https%3A%2F%2Fservice.contoso.com%2F &client_secret=p@ssw0rd

  4. 如果您成功完成所有操作,您现在应该拥有访问令牌。现在就随意调用您的 API。 :)

【讨论】:

    【解决方案2】:

    我之前在 Web 表单应用程序中做过相关的代码示例,但您应该首先了解 authorization code flow 在 AAD 中的工作原理。之后,您可以点击here 获取代码示例。您会在我的代码中发现我使用 ADAL 使用授权代码获取访问令牌。你需要做的是修改AcquireTokenWithResource函数:

    1. 准备请求参数并向 /token 端点发送 POST 请求。
    2. 反序列化 json 结果并获取访问令牌。您可以使用 Newtonsoft.Json 库。

    编码过程中有任何问题,请随时告诉我。

    【讨论】:

    • 你的代码真的很有帮助!!!我遇到了重定向 URL 错误,但终于让我的项目工作了!谢谢!!!!
    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2023-04-04
    • 2014-07-09
    相关资源
    最近更新 更多