【问题标题】:a method to retrieve id_token from Azure AD body request从 Azure AD 正文请求中检索 id_token 的方法
【发布时间】:2020-03-21 19:38:22
【问题描述】:

我正在关注这个 WebApp-WebAPI example。在 B2C 用户获得授权并在正文中收到 id_token 后,是否有一种方法可以检索 id_token?我正在使用 Function app V3。

我在一个 azure Function 应用程序中收到了对 replyURL 的授权响应,但是 id_token 与代码和状态数据混合在一起,我似乎无法将其分解或反序列化为 json:

public class Function1
{
    internal class AuthToken
        {
            [JsonProperty("id_token")]
            public string id_Token { get; set; }

            [JsonProperty("state")]
            public string StateToken { get; set; }

            [JsonProperty("code")]
            public string CodeToken { get; set; }
        }

    private readonly HttpClient httpClient = new HttpClient();
    [FunctionName("ReceiverAuth")]
    public static async Task<HttpStatusCode> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
        //this works and shows id_token, state, code as text (also without the Encoding.UTF8 parameter)
        var requestBody = await new StreamReader(req.Body, Encoding.UTF8).ReadToEndAsync();

       //trying to separate the id_token data into json throws http500
        AuthToken authTok = JsonConvert.DeserializeObject<AuthToken>(requestBody);
        var idToken = authTok.id_Token;
}

也尝试过,但没有改变结果:

var decodedRequestBody = System.Net.WebUtility.HtmlDecode(requestBody);

在我的菜鸟眼里,Fiddler 的身体感觉数据被破坏了,但我无法分离 req 上的 id_token。已收到。显示请求标头和网络表单和响应。

【问题讨论】:

    标签: azure azure-api-apps azure-authentication


    【解决方案1】:

    数据以form data 的形式发送给您,而不是 JSON。

    你需要使用这样的东西:

    var idToken = req.Form["id_token"];
    

    或者你可以试试FromForm而不是HttpRequest req

    [FromForm] AuthToken authTok
    

    如果这些不起作用,请检查这些:How to parse form data using Azure Functions

    【讨论】:

    • 非常感谢@Alex AIT,救命! var idToken = req.Form["id_token"];工作:)
    猜你喜欢
    • 2020-07-08
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多