2017-01-13 4 views
0

で働いていません。 しかし、これをWebアプリケーションから実行すると、呼び出しは返されず、例外もスローされません。私はフィドラーをチェックして、この呼び出しで接続が終了するようです。acquiretokenasyncは、私は、次のオーバーロードを使用しようとしていますWebアプリケーション

これを解決するにはどうすればよいですか?制限付きのアクセス許可を持つHttpContextに関連していますか?

答えて

0

通常、私たちは承認コード付与フローをウェブアプリケーションで取得します。目標を達成するために、我々は以下のようなOnAuthorizationCodeReceivedイベント(full code sample)を実装する必要があります。

string authority = "https://login.microsoftonline.com/{tenantId}"; 
string clientId = "{clientId}"; 
string secret = "{secret}"; 
string resource = "https://graph.windows.net"; 

var credential = new ClientCredential(clientId, secret); 
AuthenticationContext authContext = new AuthenticationContext(authority); 

var token = authContext.AcquireTokenAsync(resource, credential).Result.AccessToken; 

の場合:あなたは資格情報はを流しクライアントを実装する場合

private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedNotification context) 
{ 
     var code = context.Code; 

     ClientCredential credential = new ClientCredential(clientId, appKey); 
     string userObjectID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value; 
     AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID)); 

     // If you create the redirectUri this way, it will contain a trailing slash. 
     // Make sure you've registered the same exact Uri in the Azure Portal (including the slash). 
     Uri uri = new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)); 

     AuthenticationResult result = await authContext.AcquireTokenByAuthorizationCodeAsync(code, uri, credential, graphResourceId); 
} 

を、あなたは以下のコードを参照することができますそれでも問題がある場合は、詳細コードを共有すると便利です。

+0

Microsoft.IdentityModel.Clients.ActiveDirectoryのバージョン2.135を使用しました。 AcquireTokenAsyncの代わりにAcquireTokenを使用しました。それは動作するようです。理由は何でしょうか? – namrata

+0

開発中の詳細コードを共有することができます。非同期メソッドを開発する場合、非同期メソッドが結果を取得するのをコードが確認する必要があります。 –

0

それはASYN /に関する作るの開発者に対し、単に一般的なミスはあなただけのトークンを盗んMethodeのの呼び出しに近いのawaitキーワードのあなたの方法に、そしてもちろん>タスク<非同期(async)を追加する必要が

を待っています

関連する問題