如何从 AdalException 中检索 JSON 响应?
How can I retrieve the JSON response from an AdalException?
如果我从我们的服务调用 AuthenticationContext.AcquireToken,它会在特定情况下抛出 AdalException,因为我发送的令牌缺少必需的声明。当我调用 AcquireToken 时的响应中包含 JSON 以及缺少的声明。我希望能够得到那个 JSON(特别是丢失的声明信息),这样我就可以尝试用那个丢失的声明重新授权用户。
一旦我从调用 AcquireToken 捕获到 AdalException,我如何才能在 JSON 响应中找出丢失的声明?如果我尝试从 AdalException 上的 innerException 获取响应流:
catch (AdalException ex)
{
WebException webex = (WebException)ex.InnerException;
WebResponse response = webex.Response;
Stream responseStream = response.GetResponseStream();
...
… 然后我得到的 responseStream 的 CanRead、CanSeek 和 CanWrite 属性都设置为 false。因此,我不确定如何检索丢失的声明参数,因为我实际上无法从该流中读取。
对 return 整个服务器 JSON 响应的修复是在 ADAL v3 中进行的。 Github Link :- https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/513
它在 ADAL v2 中尚不可用。
如果我从我们的服务调用 AuthenticationContext.AcquireToken,它会在特定情况下抛出 AdalException,因为我发送的令牌缺少必需的声明。当我调用 AcquireToken 时的响应中包含 JSON 以及缺少的声明。我希望能够得到那个 JSON(特别是丢失的声明信息),这样我就可以尝试用那个丢失的声明重新授权用户。
一旦我从调用 AcquireToken 捕获到 AdalException,我如何才能在 JSON 响应中找出丢失的声明?如果我尝试从 AdalException 上的 innerException 获取响应流:
catch (AdalException ex)
{
WebException webex = (WebException)ex.InnerException;
WebResponse response = webex.Response;
Stream responseStream = response.GetResponseStream();
...
… 然后我得到的 responseStream 的 CanRead、CanSeek 和 CanWrite 属性都设置为 false。因此,我不确定如何检索丢失的声明参数,因为我实际上无法从该流中读取。
对 return 整个服务器 JSON 响应的修复是在 ADAL v3 中进行的。 Github Link :- https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/513 它在 ADAL v2 中尚不可用。