В следующем коде GetUserAccount возвращает нулевого пользователя, даже если предыдущий AcquireTokenByAuthorizationCode возвратил и токен доступа, и токен id. Я ожидал бы, что это будет ненулевым. В моем более позднем коде сбор данных без вывода сообщений, очевидно, завершается неудачей, поскольку пользователь все еще равен нулю. Чего мне не хватает?
var code = ctx.Code;
string signedInUserID = ctx.AuthenticationTicket.Identity.FindFirst(System.IdentityModel.Claims.ClaimTypes.NameIdentifier).Value;
TokenCache userTokenCache = new MSALSessionCache(signedInUserID, ctx.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase).GetMsalCacheInstance();
var capp = new ConfidentialClientApplication(
clientId,
String.Format("https://login.microsoftonline.com/tfp/{0}.onmicrosoft.com/{1}/v2.0/.well-known/openid-configuration", "b2cdom", "B2C_1_BasicSUSI"
),
"https://localhost:44368/",
new ClientCredential(
ConfigurationManager.AppSettings["ida:Secret"]),
userTokenCache,
null
);
capp.ValidateAuthority = false;
var tokens = await capp.AcquireTokenByAuthorizationCodeAsync(
code,
new string[] { "https://mrochonb2cprod.onmicrosoft.com/webapiill/read" }
);
var user = await capp.GetAccountAsync(signedInUserID);