2016-11-18 103 views
0

如果我從我們的服務調用AuthenticationContext.AcquireToken,它會在某種情況下拋出AdalException,因爲我發送的令牌缺少必需的聲明。我調用AcquireToken時的響應包含JSON,並且缺少索賠。我希望能夠獲得該JSON(特別是缺少的索賠信息),以便我可以嘗試用缺少的索賠重新授權用戶。如何從AdalException中檢索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。因此,我不確定如何檢索丟失的聲明參數,因爲我實際上無法從該流中讀取。

+0

什麼確切異常消息,你得後你叫''AcquireToken方法?並請向我們展示您正在開發的代碼。我們沒有發送聲明來獲取令牌,而是Auzre AD需要基於您正在整合的[OAuth 2.0](https://tools.ietf.org/html/rfc6749)授權流程的參數。 –

+0

請幫助我瞭解您需要查看的部分代碼。涉及客戶端/服務應用程序的身份驗證代碼可能爲數千行。哪部分與此有關?在客戶端上,我們調用WebAuthenticationCoreManager.GetTokenSilentlyAsync()。這爲我們的應用程序提供了一個令牌,可以在調用我們的服務時填入承載HTTP頭中。我們的服務讀取頭文件(通過調用ClaimsPrincipal.Current.Identities.First()。BootstrapContext),然後將其傳遞給AuthenticationContext.AcquireToken。這會引發以下消息的異常: –

+0

{「AADSTS50079:由於您的管理員進行了配置更改,或者因爲您搬到新位置,您必須註冊多因素身份驗證才能訪問'00000002-0000-0ff1-ce00 -000000000000' \ r \ nTrace ID:9dd52cb2-f230-4782-9c5a-b6cc11cfd5b3 \ r \ nCorrelation ID:d92e3da9-6bf2-446e-AFC2-ca1e91d5edfe \ r \ nTimestamp:2016年11月21日17:00:56Z」 }。我們從AAD獲得的JSON響應具有其中缺失的索賠參數:索賠=%7B%22access_token%22%3A%7B%22%PERSONAL%22%3A%7B%22基本%22%3A%2C%22%22%3A %5B%22d37c654b-b508-48ff-867c-77134090a605%22%5D%7D%7D%7D。 –

回答