で働いていません。 しかし、これをWebアプリケーションから実行すると、呼び出しは返されず、例外もスローされません。私はフィドラーをチェックして、この呼び出しで接続が終了するようです。acquiretokenasyncは、私は、次のオーバーロードを使用しようとしていますWebアプリケーション
これを解決するにはどうすればよいですか?制限付きのアクセス許可を持つHttpContextに関連していますか?
で働いていません。 しかし、これをWebアプリケーションから実行すると、呼び出しは返されず、例外もスローされません。私はフィドラーをチェックして、この呼び出しで接続が終了するようです。acquiretokenasyncは、私は、次のオーバーロードを使用しようとしていますWebアプリケーション
これを解決するにはどうすればよいですか?制限付きのアクセス許可を持つHttpContextに関連していますか?
通常、私たちは承認コード付与フローをウェブアプリケーションで取得します。目標を達成するために、我々は以下のような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);
}
を、あなたは以下のコードを参照することができますそれでも問題がある場合は、詳細コードを共有すると便利です。
それはASYN /に関する作るの開発者に対し、単に一般的なミスはあなただけのトークンを盗んMethodeのの呼び出しに近いのawaitキーワードのあなたの方法に、そしてもちろん>タスク<非同期(async)を追加する必要が
を待っています
Microsoft.IdentityModel.Clients.ActiveDirectoryのバージョン2.135を使用しました。 AcquireTokenAsyncの代わりにAcquireTokenを使用しました。それは動作するようです。理由は何でしょうか? – namrata
開発中の詳細コードを共有することができます。非同期メソッドを開発する場合、非同期メソッドが結果を取得するのをコードが確認する必要があります。 –