在ADAL.Net中,我们可以使用以下代码获取当前获取的是哪个资源。
// Acquiring a token
AuthenticationContext authenticationContext = new AuthenticationContext(authority);
AuthenticationResult result = await authenticationContext.AcquireTokenAsync(resource, clientId, redirectUri, parameters).ConfigureAwait(false);
如果我们在上面的代码中更改了资源名称,则SPN值不会发生变化并且代码可以正常运行。
但是在MSAL.Net中,我们需要更改值才能在不更改资源名称的情况下使用新的SPN值。
// Acquiring a token
IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId).WithTenantId(tenantId).Build();
AuthenticationResult result = await application.AcquireTokenForClient(scopes).WithAuthority(authority).ExecuteAsync().ConfigureAwait(false);
我们可以通过使用上面的代码中定义的WithAuthority方法并将其设置为新SPN值来更改SPN值。
IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId).WithTenantId(tenantId).WithAuthority(new Uri(authUrl)).Build();
只需将新的SPN值设置为“authUrl”,即可不更改资源名称而使用新的SPN值。