我正在尝试使用已生成的Microsoft图形资源访问令牌获取SharePoint在线网站集的访问令牌,并使用Pnp AuthManger传递该访问令牌以获取网站集的客户端上下文。
有人可以建议我如何做到这一点?是否可行?
我知道可以为不同的资源组进行两次不同的身份验证调用。
在下面的文章中找到,但它在Microsoft.IdentityModel.Clients.ActiveDirectory中更新了AuthenticationContext类,并且不再具有AuthenticationContext.AcquireTokenByRefreshTokenAsync方法。
注意:我在上面使用.net库。
答案 0 :(得分:1)
ADAL支持获取多个资源的令牌。您仍然可以使用ADAL库来满足您的要求。
是的,在ADAL 3中,AcquireTokenByRefreshToken方法并不存在。但是令牌缓存中仍然存在刷新令牌,您实际上并不需要使用自己的应用程序代码中的刷新令牌。使用ADAL 3时,如果要获取不同资源的访问令牌,可以使用AcquireTokenSilentAsync
方法:
string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID));
ClientCredential credential = new ClientCredential(clientId, appKey);
result = await authContext.AcquireTokenSilentAsync(YourResource, credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
调用该方法时,它将检查令牌缓存。如果差异资源不存在访问令牌(或访问令牌已过期),则它将使用刷新令牌(如果存在且未过期)来获取该资源的新访问令牌。