问题描述

使用 az login指令登录,遇见 OS Error: [WinError -2146893813] : '', 在指令中添加 --debug后,输出的错误消息为:

urllib3.connectionpool: Starting new HTTPS connection (1): *****.******.com:443
urllib3.connectionpool: https://****.****.com:443 "POST /adfs/services/trust/13/usernamemixed HTTP/1.1" 200 7155
urllib3.connectionpool: Starting new HTTPS connection (1): login.chinacloudapi.cn:443
urllib3.connectionpool: https://login.chinacloudapi.cn:443 "POST /organizations/oauth2/v2.0/token HTTP/1.1" 200 4488
msal_extensions.persistence: DPAPI error likely caused by file content not previously encrypted. App developer should migrate by calling save(plaintext) first.
Traceback (most recent call last):
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/persistence.py", line 180, in load
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\msal_extensions/windows.py", line 114, in unprotect
OSError: [WinError -2146893813] : ''

从以上错误信息来看,只能发现与 MSAL扩展persistence.py有关,但是在执行的机器中,并不存在错误消息中的目录 (D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\ )

在升级 azure cli的版本后( az upgrade或下载最新的msi安装包:https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli) ,OSError 的错误代码一样,但是有了更具体的错误消息和提示信息:

cli.azure.cli.core.azclierror: Decryption failed:[WinError -2146893813] Key not vaid for use in specified state.. 
App developer may consider this guidance https://github.com/AzureAD/microsoft-authentication-extensions-for-python/wiki/PersistenceDecryptionError
Please report to us via Github : https://github.com/Azure/azure-cli/issues/20231

错误截图

问题解答

根据最新错误中的提示,访问Github (https://github.com/Azure/azure-cli/issues/20231)找到了问题的答案和解决办法。

问题原因

可能是之前该机器中安装过旧 az cli ,它是基于ADAL做登录验证的。而新版的az cli使用的是MSAL,可能是一些历史文件存留在  C:\Users\<username>\.azure 文件夹下。 引起了格式错乱问题。

解决办法

删除本机上缓存的 C:\Users\<username>\.azure 文件夹, 再次使用 az login 即可登录成功,不报错。问题解决!

参考资料

`az login` fails: OSError: [WinError -2146893813] · Issue #20231  : https://github.com/Azure/azure-cli/issues/20231

【Azure 环境】使用az login登录遇见OSError: [WinError -2146893813] : '' 错误的更多相关文章

  1. 【Azure 环境】在Windows系统中 使用Terraform创建中国区Azure资源步骤(入门级)

    Terraform(全称:Hashicorp Terraform )是一种开源工具,用于预配和管理云基础结构. 它将基础结构编入描述云资源拓扑的配置文件中. 这些资源包括虚拟机.存储帐户和网络接口等. ...

  2. 【Azure 环境】使用Microsoft Graph PS SDK 登录到中国区Azure, 命令Connect-MgGraph -Environment China xxxxxxxxx 遇见登录错误

    问题描述 通过PowerShell 连接到Microsoft Graph 中国区Azure,一直出现AADSTS700016错误, 消息显示 the specific application was ...

  3. 【Azure 环境】连接到微软云Azure中国区 By VS 2019, VS Code, Powershell

    问题情形 最近,在使用最新的VS Code插件连接到中国区的Azure时候,出现了依旧是global版的登录连接.这个问题是当前Azure Account插件最新版的问题,可以使用V0.8.11版本登 ...

  4. 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法

    问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...

  5. 【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题

    问题描述 当打开Azure存储账号(Storage Account)门户页面时,从 "访问控制(标识和访问管理)" 页面中发现有"拒绝分配"的功能,所以就思考, ...

  6. ASP.NET 在 Windows Azure 环境中使用基于 SQLServer 的 Session

    Session 嘛,占一点儿服务器资源,但是总归比 ViewState 和 Cookie 安全点儿,所以还是要用的. Windows Azure 环境中的 Web 服务器经由负载均衡调度,根本无法保证 ...

  7. C#学习笔记-Windows窗体基本功能(Login登录界面)

    本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...

  8. Azure VM对远程桌面登录的支持-示例

    我们在开发Windows Azure的应用程序,虽然在大部分的情况下都可以使用Azure Emulator模拟器来模拟在云端计算节点(Azure VM)的执行结果,但是并不能100%模拟真正在Azur ...

  9. Azure环境中Nginx高可用性和部署架构设计

    前几篇文章介绍了Nginx的应用.动态路由.配置.在实际生产环境部署时,我们需要同时考虑Nginx的高可用性和部署架构. Nginx自身不支持集群以保证自身的高可用性,商业版本的Nginx+推荐: T ...

  10. [Debug]测试环境Giraffe无法正确登录

    BUG描述: 在测试环境192.168.2.72上的giraffe无法正确登录,输入正确的用户名.密码,点击登录无反应,输入错误的用户名密码会报错 原因: 2.72安装giraffe的磁盘空间已满,导 ...

随机推荐

  1. MySQL in Windows安装以及异名恢复的简单过程

    下载相关 建议获取最新版本的Mysql数据库 可以获取 zip 格式的安装文件 https://dev.mysql.com/downloads/mysql/ 或者获取 msi 格式的安装文件 http ...

  2. [译]深入了解现代web浏览器(四)

    本文是根据Mariko Kosaka在谷歌开发者网站上的系列文章https://developer.chrome.com/blog/inside-browser-part4/翻译而来,共有四篇,该篇是 ...

  3. 日志框架简介-Slf4j+Logback入门实践 | 京东云技术团队

    前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息.因此,作为工程师,了解主流的日志记录框架非常重要.虽然应用程序的运行结果 ...

  4. 【一个经典BUG】gin框架中,异步协程使用context导致取不到数据

    bug的内容大致如下: func httpHandle(c *gin.Context) { go func(ctx Context){ v := ctx.Value("xxx") ...

  5. 宏观上看Spring创建对象的过程

    宏观上看Spring创建对象的过程 对于对象而言,可以分为简单对象和复杂对象: 简单对象 简单对象指可以直接new的对象: Spring在创建这些对象时,是基于反射来完成的. 复杂对象 复杂对象指不能 ...

  6. 从零开始匹配vim(1)——选项设置

    前面我们算是对 vimscript 做了一个入门,并且实现了一个 输出 hello world 的语句.现在我们继续进行 vimscript 的学习. set语句 之前在介绍 vim 基础的时候,我们 ...

  7. 3.4 DLL注入:全局消息钩子注入

    SetWindowHookEx 是Windows系统的一个函数,可用于让一个应用程序安装全局钩子,但读者需要格外注意该方法安装的钩子会由操作系统注入到所有可执行进程内,虽然该注入方式可以用于绕过游戏保 ...

  8. Centos8 配置IP地址与阿里YUM源

    Centos8 系统中无法找到network.service网络服务,默认已经被nmcli替换了,所以修改方式略微变化,在/etc/sysconfig/network-scripts/里也看不到任何脚 ...

  9. C/C++ 实现通过FTP上传下载

    实现FTP文件下载: #include <stdio.h> #include <Windows.h> #include <WinInet.h> #pragma co ...

  10. OS X 下安装 pycurl

    1 (venv) ➜ pythonProject4 find / -iname ssl.h 2 find: /usr/sbin/authserver: Permission denied 3 /usr ...