MSALはキャッシュを検索し、要件に一致するキャッシュされたトークンを返します。このようなアクセストークンが期限切れになっているか、適切なアクセストークンが存在しないが、関連付けられたリフレッシュトークン(有効範囲がoffline_access
必要)がある場合、MSALはそれを自動的に使用して新しいアクセストークンを取得し、
は、Microsoftのグラフのためのアクセストークンに認証コードを償還するMSALを使用した場合、OpenIDのでowinミドルウェアを接続します
AuthorizationCodeReceived = async (context) =>
{
var code = context.Code;
string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
TokenCache userTokenCache = new MSALSessionCache(signedInUserID,
context.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase).GetMsalCacheInstance();
ConfidentialClientApplication cca =
new ConfidentialClientApplication(clientId, redirectUri, new ClientCredential(appKey), userTokenCache,null);
string[] scopes = { "Mail.Read" };
try
{
AuthenticationResult result = await cca.AcquireTokenByAuthorizationCodeAsync(code, scopes);
}
catch (Exception eee)
{
}
},
範囲Mail.Read
では、Microsoftグラフのためのアクセストークンを得ることができますあなたがコントローラ/アクションでoutlookメールの残りAPIを呼び出す場合は、スコープ:https://outlook.office.com/mail.read
を使用することができます。キャッシュされた最新表示トークンを使用してOutlookメールの残りのAPIのトークンを取得します。
// try to get token silently
string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
TokenCache userTokenCache = new MSALSessionCache(signedInUserID, this.HttpContext).GetMsalCacheInstance();
ConfidentialClientApplication cca = new ConfidentialClientApplication(clientId, redirectUri,new ClientCredential(appKey), userTokenCache, null);
if (cca.Users.Count() > 0)
{
string[] scopes = { "https://outlook.office.com/mail.read" };
try
{
AuthenticationResult result = await cca.AcquireTokenSilentAsync(scopes,cca.Users.First());
}
catch (MsalUiRequiredException)
{
try
{// when failing, manufacture the URL and assign it
string authReqUrl = await WebApp.Utils.OAuth2RequestManager.GenerateAuthorizationRequestUrl(scopes, cca, this.HttpContext, Url);
ViewBag.AuthorizationRequest = authReqUrl;
}
catch (Exception ee)
{
}
}
}
else
{
}
コードサンプル:Integrate Microsoft identity and the Microsoft Graph into a web application using OpenID Connectを参照してください。
これを実行して検証していただきありがとうございます。私のものはUWPアプリです。 –