当门户说不需要时,为什么 Azure devops 委派权限要求管理员同意?

时间:2021-07-10 14:59:30

标签: azure-devops azure-active-directory openid-connect msal asp.net-core-5.0

我正在尝试通过 Microsoft 身份 Web 库的 Itokenacquisition 获取 azure devops 令牌。当范围存在于 enabletokenacquisitiontocalldownstreamapi 在启动文件中并且当我已经登录到应用程序时,我能够生成令牌。当我退出应用程序并再次登录时,它会要求管理员同意。不确定行为。第二次登录时,它包含 ado 范围。

1 个答案:

答案 0 :(得分:0)

<块引用>

在网络应用程序和网络 API 中使用令牌缓存序列化程序。它们提供 用于存储令牌的分布式数据库或缓存系统。

<块引用>

当您使用适用于 .NET 的 Microsoft 身份验证库获取访问令牌时 (MSAL.NET),令牌被缓存。当应用程序需要令牌时, 它应该首先调用 AcquireTokenSilent 方法来验证 可接受的令牌在缓存中。

有关 AcquireTokenSilent 的详细信息,请参阅 Acquire a token from cache

  • 检查这些:
  1. 在 startup.cs 文件中,确保在 ConfigureServices() 方法中添加 .AddInMemoryTokenCaches();示例:

using Microsoft.Identity.Web;

public class Startup
{
 const string scopesToRequest = "user.read";
  
  public void ConfigureServices(IServiceCollection services)
  {
   // code before
   services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
           .AddMicrosoftIdentityWebApp(Configuration)
             .EnableTokenAcquisitionToCallDownstreamApi(new string[] { scopesToRequest })
                .AddInMemoryTokenCaches();
   // code after
  }
  // code after
}

  1. 在 Configure() 方法中添加 app.UseAuthentication();
<块引用>

AddInMemoryTokenCaches 接受类型为可选的参数 MsalMemoryTokenCacheOptions 使您能够指定持续时间 之后缓存条目将过期,除非它被使用。

有关详细信息,请参阅 msal-net-token-cache-serialization

  • 您可以指定访问、SAML 或颁发的 ID 令牌的生命周期 通过 Microsoft 身份平台--参考:Configure-token-lifetimes
  1. 您可以检查是否在身份验证请求中传递了 prompt=consent 参数。您可以包含该参数。

参考:

  1. How to create a .NET Core API that accepts authenticated requests from a Power App
  2. AD-permissions-and-consent
  3. permissions-and-consent#openid-connect-scopes
  4. OAuth Permissions in Azure AD & MSA