C# 当前应用程序的Adal.NET acquiretoken

C# 当前应用程序的Adal.NET acquiretoken,c#,asp.net,azure,jwt,adal,C#,Asp.net,Azure,Jwt,Adal,是否可以为当前应用程序获取jwt令牌,而不基于另一个Azure应用程序,或者在登录的整个生命周期中保留该令牌 在我的应用程序中,我正在使用Owin和OpenIdConnect向Azure验证我的用户。身份验证成功,我从Azure收到一个令牌 在以后的方法中,我需要将令牌作为参数传递,所以现在我将其存储在会话变量中,但这会提前过期并导致一个空变量 现在我正试图用ADAL从Azure获得一个令牌 string userObjectId = ((ClaimsIdentity)User.Identit

是否可以为当前应用程序获取jwt令牌,而不基于另一个Azure应用程序,或者在登录的整个生命周期中保留该令牌

在我的应用程序中,我正在使用Owin和OpenIdConnect向Azure验证我的用户。身份验证成功,我从Azure收到一个令牌

在以后的方法中,我需要将令牌作为参数传递,所以现在我将其存储在会话变量中,但这会提前过期并导致一个空变量

现在我正试图用ADAL从Azure获得一个令牌

 string userObjectId = ((ClaimsIdentity)User.Identity).Claims.FirstOrDefault(c => c.ToString() == "http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value;
 AuthenticationContext authContext = new AuthenticationContext(ConfigurationManager.AppSettings["ida:AADInstance"] + ConfigurationManager.AppSettings["ida:TenantId"], new TokenCache());
 ClientCredential credential = new ClientCredential(ConfigurationManager.AppSettings["ida:ClientId"], "client_secret"); 
 var result = authContext.AcquireTokenAsync(ConfigurationManager.AppSettings["ida:ClientId"], credential).Result.AccessToken;
这将导致一个错误:

对于其他应用,它是用另一个具有资源权限的应用设置的,但我不想依赖另一个应用来获取令牌

有人有主意吗

编辑

我遵循了@Jean MarcPrieur的建议,但仍在进行中

var accounts = await application.GetAccountsAsync();

它不返回导致空结果的帐户,也不返回accessToken。

此处您尝试使用需要应用程序注册权限才能调用要调用的Web API的帐户-租户管理员权限

如果你想以用户的名义访问资源,你需要为你的应用程序获取一个令牌,以登录用户的名义调用API。 例如,请参见此示例:哪个用户登录并调用图形
这是一个ASP.NET核心示例,使用Azure AD v2.0端点和最新技术。如果您有其他限制,请尽管问。

您可以重新使用powershell应用程序id来绕过注册要求。@Swend,这是一种糟糕的做法。每个应用程序都应该有自己的应用程序注册。@Jean MarcPrieur这也可以在.NET中使用吗?@NiAu:我不明白你的问题。在.NET中可以使用什么?我提供了.NET链接?
var accounts = await application.GetAccountsAsync();