очистить кэшированные учетные данные клиента TFS - PullRequest
0 голосов
/ 29 мая 2019

Пожалуйста, помогите мне очистить кэшированные учетные данные TFS с помощью кода на C #. Я использую TFS API для доступа к исходному коду, размещенному на сервере TFS Dev ops по адресу https://dev.azure.com

иногда (после изменения пароля домена) возникает ошибка 401 при доступе к серверу с исходным кодом. Ниже приведен пример кода, используемого для подключения:

    var u = "https://dev.azure.com/orgid";

    var vssCred = new VssClientCredentials();
    if (cacheCred)
        vssCred.Storage = new VssClientCredentialStorage(); // tried with storage and without

    Logger.Debug("getting vsts collection for url:{0}", u);
    TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(u, vssCred);
    try
    {
        Logger.Debug("authenticating");

        tpc.Authenticate();
        tpc.GetService<VersionControlServer>();

использует пакеты Microsoft.TeamFoundationServer.ExtendedClient.15.131.1 и Microsoft.TeamFoundationServer.Client.15.131.1.

Я пытался очистить кэшированные учетные данные, используя следующий код:

IEnumerable<string> ClearCachedTokens(VssCredentials cred, Uri address)
{
    if (cred == null) return null;
    var res = new Collection<string>();
    foreach (VssCredentialsType enumValue in Enum.GetValues(typeof(VssCredentialsType)))
        try
        {
            var token = cred.Storage.RetrieveToken(address, enumValue);
            if (token != null)
            {
                var tokenData = string.Join(";", token.Properties.Select(_ => string.Format("{0}={1}", _.Key, _.Value)));
                Logger.Debug("got token {0} {1}", enumValue, tokenData);
                cred.Storage.RemoveToken(address, token);
                res.Add(address.ToString());
            }
        }
        catch (Exception ec)
        {
            Logger.Warn("can't clear token type:{0} error:{1}", enumValue, ec.Message);
        }
    return res;
}

но он не возвращает никаких записей, и ошибка все еще сохраняется.

Однако ошибка исчезает, когда я удаляю содержимое %appdata%Local\Microsoft\Team Foundation\7.0\Cache и запускаю команду tf.exe get. Он запрашивает у меня логин и пароль, а затем ошибка 401 больше не отображается при выполнении tpc.Authenticate();.

Как очистить кэшированные учетные данные в папке Cache с помощью TeamFoundationServer.Client или TeamFoundationServer.ExtendedClient API?

1 Ответ

0 голосов
/ 29 мая 2019

Возможно, учетные данные были сохранены в хранилище диспетчера учетных данных (Control Panel\All Control Panel Items\Credential Manager) в группе Универсальные учетные данные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...