【问题标题】:Change "code" parameter in Microsoft Graph API Redirect Uri更改 Microsoft Graph API 重定向 Uri 中的“代码”参数
【发布时间】:2018-04-17 09:40:20
【问题描述】:

我正在构建一个使用 Microsoft Graph API 进行身份验证的 Azure Functions 应用程序。我创建了一个 processCode 函数作为我的重定向 URI,它采用 Graph API 发送的代码来生成 Graph 令牌。

但是,Azure Functions 在其调用中使用code 查询字符串参数来传递函数键。

我是否可以将 Graph API 重定向 URI 配置为使用 code 以外的其他查询字符串参数?

本质上是改变

https://myapp/api/processCode?code=GRAPH-CODE (conflicting code parameter)

https://myapp/api/processCode?code=FUNCTIONS-KEY&graphcode=GRAPH-CODE

【问题讨论】:

    标签: azure-active-directory microsoft-graph-api azure-functions


    【解决方案1】:

    你不能。 code= 查询参数由 OAuth 2.0 规范 (RFC 6249) 定义。

    您可以做的是将您的response_modequery 更改为form_post,当您使用request the authoirzation code。这会改变代码本身的返回方式。与其在授权中使用code 向您的redirect_uri 发出GET,不如在正文中使用coderedirect_uri 发出POST(即application/x-www-form-urlencoded)。

    您必须调整 Azure 函数以侦听 POST 并从正文而不是查询字符串解析内容。否则,一切都应该保持不变。 application/x-www-form-urlencoded 与查询字符串格式 (key=value&key=value&etc) 非常相似。

    【讨论】:

    • 感谢 Marc,这是一个不错的选择,现在就试试。当前的阻止程序正在寻找在 MSAL 库中设置 response_mode 的位置,但一旦有更新就会恢复。
    • 我不确定 MSAL 是否支持 form_post(阅读:我在代码中的任何地方都找不到它的引用)。
    • 可以,只需在extraQueryParameters字段中添加:await client.GetAuthorizationRequestUrlAsync(scopes, null, "response_mode=form_post");
    • 谢谢 Marc,这是正确的答案 :) 我已经对其进行了测试并使其成功运行。另一个可能的答案是使函数匿名。这允许在不传递代码参数的情况下调用端点,让我们将其用于 Graph Token :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2018-02-01
    • 2019-01-24
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多