VS2013でテンプレートプロジェクトからMicrosoftグラフAPIを呼び出すには、問題に私が直面してるブレークダウンである:私は、マルチテナント組織 アカウントでVS2013、MVCからプロジェクトを作成し のAzure Active Directoryのここ
- ログインは、プロジェクトテンプレートは、私のために正常に動作しますが、私はより多く必要とする認証
- のためのAADを使用して、私は コールグラフAPI
- に必要なグラフAPIを呼び出すgithubの上sampleプロジェクトはまた、独自に正常に動作しますが、我々同じコンセプトをプロジェクトに適用する必要があるVS2013 からテンプレートに基づいて
- 同様の の方法を使用して当社のソリューションからグラフAPIを呼び出そうとすると、それはここで
を動作しません、私がしてきた苦しみをまとめたものです最後の数日を経て
VS2013のプロジェクトテンプレートは、アカウントのコントローラでサインイン方式のため、このコードを使用しています。
WsFederationConfiguration config = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration;
string callbackUrl = Url.Action("Index", "Home", routeValues: null, protocol: Request.Url.Scheme);
SignInRequestMessage signInRequest = FederatedAuthentication.WSFederationAuthenticationModule.CreateSignInRequest(
uniqueId: String.Empty,
returnUrl: callbackUrl,
rememberMeSet: false);
signInRequest.SetParameter("wtrealm", IdentityConfig.Realm ?? config.Realm);
return new RedirectResult(signInRequest.RequestUrl.ToString());
githubのからのサンプルプロジェクトは、この使用しています:起動クラスに続いて
HttpContext.GetOwinContext()
.Authentication.Challenge(new AuthenticationProperties {RedirectUri = "/"},
OpenIdConnectAuthenticationDefaults.AuthenticationType);
をそれがAuthorizationCodeReceivedをキャプチャこのように:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = Authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications()
{
//
// If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
//
AuthorizationCodeReceived = (context) =>
{
var code = context.Code;
次に、それをth EA TokenCache、グラフAPIを呼び出すとき、それは私が実行しようとしましたこれは何
AuthenticationContext authContext = new AuthenticationContext(Startup.Authority,
new NaiveSessionCache(userObjectID));
ClientCredential credential = new ClientCredential(clientId, appKey);
result = authContext.AcquireTokenSilent(graphResourceId, credential,
new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
のようなキャッシュでAuthenticationContextクラスを開始し、この次のとおりです。
AuthenticationContext authContext = new AuthenticationContext(authority);
ClientCredential credential = new ClientCredential(clientId, appKey);
結果=はauthContext.AcquireTokenAsync(graphResourceIdを待ちます資格証明書)
これは、情報が欠落している短いトークンを返します。
MVCと組織アカウントのログインを使用してVS2013で新しいプロジェクトを作成し、グラフAPIを呼び出すと、この問題は簡単に複製できます。
VS2013のテンプレートプロジェクトを使用してグラフAPIを呼び出す方法が必要です。
ADからどのような情報が必要ですか?このトークンを使用してグラフAPIを呼び出す必要があります – Thomas
AADによる簡単な認証方法は、ユーザーのログイン名のみを返します。私たちのクライアントの1人は、自分のメールとは異なるログインをしています。私は彼らの電子メールを取得する必要があります。この情報を持つグラフから返される "mail"というパラメータがあります。 –