【问题标题】:Check if ADO token has expired for nuget feed authentication检查用于 nuget 提要身份验证的 ADO 令牌是否已过期
【发布时间】:2020-08-11 11:10:47
【问题描述】:

目前,只要我们的构建在本地运行,我们首先会删除配置的 ADO nuget 提要:

nuget sources remove -name OurFeed

然后我们使用 Credential Provider 给我们一个新的令牌,并用这个重新创建提要:

$feed = "https://pkgs.dev.azure.com/ourfeed/_packaging/ourfeed/nuget/v3/index.json"
$creds = (& CredentialProvider.VSS.exe -U $feed | ConvertFrom-Json)
Exec { & nuget sources add -name OurFeed -username $creds.Username -password $creds.Password -storepasswordincleartext -source $feed }

当然,每个构建都这样做是非常低效的。我们这样做的原因是因为我们需要在构建项目之前确保 ADO 身份验证令牌没有过期。

在执行此操作之前,我们是否可以(非常快速地)检查提要令牌是否仍然有效?

【问题讨论】:

  • 如果您安装凭据提供程序以便 NuGet 可以自己发现它,那么您不需要将令牌放入您的 nuget.config,NuGet 将自动使用凭据提供程序获取令牌-需求。
  • @zivkan 您能否详细说明一下,NuGet 是如何发现 CredentialProvider 本身的?

标签: azure authentication azure-devops nuget


【解决方案1】:

在执行此操作之前,我们是否可以(非常快速地)检查提要令牌是否仍然有效?

我们可以使用 REST API Personal Access Tokens - List 列出特定用户的个人访问令牌 (PAT) 的所有会话令牌详细信息:

GET https://vssps.dev.azure.com/{organization}/_apis/tokenadmin/personalaccesstokens/{subjectDescriptor}?api-version=5.0-preview.1

要获取参数subjectDescriptor,我们可以使用以下带有特定用户的PAT的REST API,它将返回该特定用户的subjectDescriptor

https://dev.azure.com/{ORGANISATION_NAME}/_apis/connectionData

然后使用个人访问令牌 - 列表获取有关 PAT 的详细信息:

在这种情况下,我们可以创建一个脚本来验证validTo 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2021-12-21
    • 2021-01-10
    • 2015-11-12
    相关资源
    最近更新 更多