天道酬勤,学无止境

使用客户端凭据流以编程方式在Azure AD中添加应用程序(Adding Applications programmatically in Azure AD using Client Credentials Flow)

问题

为了与Azure API管理一起使用,我尝试以编程方式将应用程序添加到Azure Active Directory(AAD),在我的情况下,是使用Graph API。

我的情况如下:为了保护要使用Azure API管理进行管理的Web API,我想利用AAD的OAuth功能对身份验证和颁发JWT令牌进行繁重的工作,然后仅使用validate-jwt策略验证Azure API管理中一切正常。 这样做的好处是,我可以在后端服务中或多或少地省略身份验证。

只要我已经在Azure AD中为使用Web应用程序创建了一个应用程序,它就可以正常工作,但这必须从Azure门户手动完成。 Azure APIm不会自动执行此操作。

现在,我要做的是自动完成工作:我想将对APIm中的API的订阅委派给我正在编写的其他Web应用程序,然后从那里我要利用Graph API在Azure中创建应用程序AD并向API的应用程序授予权限。

我要做的第一件事是拥有第三个应用程序(我的服务应用程序),以拥有对Azure AD中Windows Azure Active Directory应用程序的完整应用程序权限。 这使我的应用程序可以使用Graph REST API访问AAD。 我设法使用client_credentials授予(从login.microsoft.com)获得访问令牌,但是此令牌不允许我在https://graph.windows.net/(my AAD ID)/applications?api-version=1.5我的https://graph.windows.net/(my AAD ID)/applications?api-version=1.5上进行POSThttps://graph.windows.net/(my AAD ID)/applications?api-version=1.5

    {
        "odata.error": {
            "code": "Authorization_RequestDenied",
            "message": {
                "lang": "en",
                "value": "Insufficient privileges to complete the operation."
            }
        }
    }

我发现(https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes)即使我授予Directory.ReadWrite.All权限,该应用程序(仅限应用程序)将无法创建或更新应用程序:

注意:专门排除上面未列出的实体的创建或更新。 这包括:应用程序,Oauth2PermissionGrant,AppRoleAssignment,设备,ServicePrincipal,TenantDetail,域等。

我接下来尝试的是资源所有者密码授予( grant_type=password ),另外传递了我自己的凭据,以便我可以在Graph API中模拟自己。 现在,我到applications端点的POST成功。

我的最根本的问题是:我可以为我的应用程序授予足够的权限,以便可以使用客户端凭据流(而不是任何代表用户的流)以编程方式添加应用程序吗? 如果是这样,怎么做?

回答1

抱歉,唐。 当前,我们没有客户端凭据流的任何权限范围(仅适用于应用程序),可用于创建应用程序或服务主体或创建任何oauth2权限授予(或您在上述目录中提到的任何其他实体)。 ReadWrite.All权限)。 我们正在研究其他仅适用于应用程序的权限,这些权限将使您可以简化这种情况,但是我没有可以提供给您的ETA。

如果您使用应用程序+用户(代码流)并向该应用程序授予Directory.AccessAsUser.All权限,则该操作应该是可能的-只要有一个使用您的应用程序的用户并且他们是租户管理员即可。 不知道这是否对您来说是可以接受的解决方法(我想这与您在密码流中使用的方法类似-尽管我建议您在此处使用代码流)。

更新:我们为AAD Graph添加了几个新的仅应用程序权限。 Application.ReadWrite.OwnedBy(允许一个应用程序创建/拥有另一个应用程序-但仅更新其创建的应用程序-它将无法触摸其不拥有的任何其他应用程序)AND Application.ReadWrite.All(其中允许应用在租户中创建/管理所有应用)。 似乎第一个比较合适。 您可以在Azure门户中的AAD图表资源中看到这些内容。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用Azure Active Directory进行身份验证-如何以编程方式接受用户凭据(Authentication with Azure Active Directory - how to accept user credentials programmatically)
    问题 有什么方法可以使用我自己的用户名和密码页面(通过AD凭据)通过Web应用程序或Web API登录到Azure Active Directory(具有AD凭据)吗? 根据我的调查,似乎没有通过编程的方式发送用户名和密码来使用Azure AD验证用户的身份(如果您在Azure外部托管应用程序)不确定他们是否认为这是某种安全漏洞(我不认为这强制执行https吗?) 似乎您只能通过执行代码授权来对用户进行身份验证(这意味着弹出我们的应用程序以登录到外部网站)。 最终,我想创建一个可以根据需要直接针对Azure AD进行身份验证的python flask API。 我过去(使用其他身份验证系统)使用Oauth grant_type = password来发送用户名和密码来完成此操作,但是我认为Azure AD不支持此功能(如果我输入错了,请改正我吗?)但这似乎是它为服务身份验证提供的服务,在http://msdn.microsoft.com/zh-CN/library/azure/dn645543.aspx之后,它不是即时消息。 如果不可能为此在Azure外部托管登录页面,则是否甚至可以在Azure内部托管一个登录页面,如此处示例所示:http://msdn.microsoft.com/zh-cn/library/azure / bc8af4ff-66e7-4d5b-b3d4
  • 如何以编程方式将应用程序添加到Azure AD?(How to add application to Azure AD programmatically?)
    问题 我想在Azure AD中自动创建应用程序,并取回Azure AD生成的客户端ID。 是否有PowerShell命令集可以执行此操作? 除了管理控制台之外,还有其他方法,例如执行此操作的API吗? 你能给我指出一个例子吗? 谢谢! 回答1 您可以通过多种方式在AAD中以编程方式创建应用程序。 我将简要介绍执行此操作的两种不同方法:PowerShell CMDLET和Graph API。 通常,我强烈建议为此使用Graph API。 电源外壳: 有一些运行的不同模块可以创建AAD应用程序/服务主体。 如果需要在租户中创建新的应用程序对象,则可以使用Azure PowerShell进行以下调用: https://msdn.microsoft.com/zh-CN/library/mt603747.aspx PS C:\> New-AzureRmADApplication -DisplayName "NewApplication" -HomePage "http://www.Contoso.com" -IdentifierUris "http://NewApplication" 如果需要在租户中为应用程序创建服务主体,则可以使用Azure AD PowerShell: https://msdn.microsoft.com/zh-CN/library/azure/jj151815
  • Azure资源托管标识浅析和实践
    生成云应用程序时需要应对的常见挑战是,如何管理代码中用于云服务身份验证的凭据。 保护这些凭据是一项重要任务。 理想情况下,这些凭据永远不会出现在开发者工作站上,也不会被签入源代码管理系统中。虽然 Azure Key Vault 可用于安全存储凭据、机密以及其他密钥,但代码需要通过 Key Vault 的身份验证才能检索它们。Azure Active Directory (Azure AD) 中的 Azure 资源托管标识功能可以解决此问题。 此功能为 Azure 服务提供了 Azure AD 中的自动托管标识。 可以使用此标识向支持 Azure AD 身份验证的任何服务(包括 Key Vault)证明身份,无需在代码中放入任何凭据。Azure 资源托管标识的工作原理:托管标识分为两种类型:系统分配托管标识 直接在 Azure 服务实例上启用。 启用标识后,Azure 将在实例的订阅信任的 Azure AD 租户中创建实例的标识。创建标识后,系统会将凭据预配到实例。 系统分配标识的生命周期直接绑定到启用它的 Azure 服务实例。 如果实例遭删除,Azure 会自动清理 Azure AD 中的凭据和标识。用户分配托管标识 是作为独立的 Azure 资源创建的。 在创建过程中,Azure 会在由所用订阅信任的 Azure AD 租户中创建一个标识。 在创建标识后
  • Azure AD Connect 用户登录选项介绍
    Azure AD Connect 相信大家都使用过,他的作用是让用户使用同一帐户密码访问本地和云资源。使IT管理员只需要对本地DC进行用户的管理即可。在新版的Azure AD Connect中,用户的登录选项发生了一些变化,添加了一项:直通身份验证,目前的身份验证方式包括3种:1) 密码同步2) 直通身份验证3) ADFS联合身份验证并且增加了:无缝SSO,此功能可以和密码同步及直通身份验证配合使用,在本地加入域的PC使用域帐户登录系统后可以直接访问云资源,而不需要再输入凭据如下图: 针对以上登录选项,我们应该选择哪种方式,大家可以参考下图: SSO支持的浏览器见下表: 下面我会针对以下2种认证方式的区别进行重点介绍:1) 使用SSO的密码同步2) 使用SSO的直通身份验证 关于以上2种认证方式的优点如下:• Great user experienceo Users are automatically signed into both on-premises and cloud-based applications.o Users don't have to enter their passwords repeatedly.• Easy to deploy & administero No additional components needed on-premises to
  • git:“ credential-cache”不是git命令(git: 'credential-cache' is not a git command)
    问题 我按照这些说明进行操作,包括有关密码缓存的部分。 似乎指令是错误的,因为每次我git push origin master我都会收到此错误: git: 'credential-cache' is not a git command. See 'get --help'. ...这时我被迫输入我的用户名和密码。 这样做之后,再次出现相同的错误消息,然后是git push的输出。 这是我的.gitconfig文件的内容: [user] name = myusername email = myusername@myemaildomain.com [credential] helper = cache 需要明确的是,在我安装Git并运行Git Bash之后,这正是我键入的内容: git config --global user.name "myusername" git config --global user.email "myusername@myemaildomain.com" git config --global credential.helper cache 请帮忙。 真令人沮丧! 回答1 从博客中我发现: “此[git-credential-cache]在Windows系统上不起作用,因为git-credential-cache通过Unix套接字进行通信。”
  • 通过FTP连接到Azure网站(Connecting to Azure website via FTP)
    问题 我使用什么登录凭据连接到Azure仪表板上列出的FTP站点? 我尝试使用与登录Azure相同的凭据,但这失败了。 TIA。 回答1 在当前的Azure门户中,可以通过转到“应用程序服务” /选择相关的应用程序服务项目/在“部署”部分/“部署中心” /“ FTP /仪表板”中设置部署凭据。 您可以选择使用预先提供的应用程序凭证,也可以分配用户凭证。 在上一代的Azure门户中,可以通过转到WEB APPS /选择相关项目/仪表板/重置您的部署凭据来设置部署凭据。 确保您将siteName \ userName指定为登录名。 网站名称部分为必填项! Web内容的默认目录为\ site \ wwwroot ,可以将其设置为许多FTP客户端的初始目录。 回答2 如果要使用默认值,则需要在仪表板中为您的站点下载发布配置文件: [新的Azure UI的更新] 这将是xml文件。 打开它并找到您的凭据。 样本: <publishProfile profileName="nameofyoursite - FTP" publishMethod="FTP" publishUrl="ftp://waws-prod-blu-001.ftp.azurewebsites.windows.net/site/wwwroot" ftpPassiveMode="True" userName=
  • SQL Server的bcp命令
    bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。BCP的所有参数: BCP可以执行的4种操作(1) 导入 这个动作使用in命令完成,后面跟需要导入的文件名。 (2) 导出 这个动作使用out命令完成,后面跟需要导出的文件名。 (3) 使用SQL语句导出 这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。 (4) 导出格式文件 这个动作使用format命令完成,后而跟格式文件名。常用操作:1. BCP 可信任连接到本地表导出:用windows认证登陆并把text.dbo.name的表导出到D盘的 t_001.txt2. BCP 可信任连接到导出查询3. BCP 可信任连接连到远程服务器导出查询也可以使用下面的T-SQL命令:EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_002.txt -c -t -T'EXEC
  • SQL Server的bcp命令
    bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表中的列有效的数据类型。BCP的所有参数: BCP可以执行的4种操作(1) 导入 这个动作使用in命令完成,后面跟需要导入的文件名。 (2) 导出 这个动作使用out命令完成,后面跟需要导出的文件名。 (3) 使用SQL语句导出 这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。 (4) 导出格式文件 这个动作使用format命令完成,后而跟格式文件名。常用操作:1. BCP 可信任连接到本地表导出:用windows认证登陆并把text.dbo.name的表导出到D盘的 t_001.txt2. BCP 可信任连接到导出查询3. BCP 可信任连接连到远程服务器导出查询也可以使用下面的T-SQL命令:EXEC master..xp_cmdshell 'BCP test.dbo.name out d:\t_002.txt -c -t -T'EXEC
  • LDAP的用途是什么?(What is LDAP used for?)
    问题 我知道LDAP用于提供一些信息并帮助简化授权。 但是LDAP的其他用途是什么? 回答1 我将重点介绍为什么使用LDAP,而不是LDAP。 使用模型类似于人们使用图书馆卡或电话簿的方式。 当您的任务需要“一次写入/更新,多次读取/查询”时,您可以考虑使用LDAP。 LDAP旨在为大规模数据集提供极快的读取/查询性能。 通常,您只希望为每个条目存储一小部分信息。 与读取/查询相比,添加/删除/更新性能相对较慢,因为假设您不经常进行“更新”。 想象一下,您有一个拥有100万注册用户的网站,每秒有数千个页面请求。 如果没有LDAP,则每次用户单击页面时,即使是静态页面查看,您都可能需要与数据库进行交互,以验证此登录会话的用户ID及其数字签名。 显然,查询数据库以进行用户验证将成为您的瓶颈。 通过使用LDAP,您可以轻松卸载用户验证并获得显着的性能改进。 本质上,在此示例中,LDAP是数据库之外的另一个优化层,用于增强性能,而不是替换任何数据库功能。 LDAP不仅用于用户验证,任何具有以下属性的任务对于LDAP都是一个很好的用例: 您需要多次定位一个数据,并且希望快速找到它您不在乎不同数据之间的逻辑和关系您不会经常更新,添加或删除数据每个数据条目的大小很小您不介意将所有这些小数据放在一个集中的位置 回答2 这是一个相当大的问题。 LDAP是用于访问目录的协议。 目录包含对象;
  • Windows 10安全指南
    Windows 10安全指南 xiaohui 嘶吼专业版 人们很容易认为,保护Windows 10设备的过程非常简单,甚至按着一定之规操作就可以了。比如,安装一些安全软件,调整一些设置,进行一两次培训,然后你就可以高枕无忧了。 但现实世界要复杂得多,初始设置只是建立一个安全基线。在完成初始配置之后,安全性需要持续的警惕和持续的工作。保护Windows 10设备的大部分工作都是要根据实际运行环境进行的。精心策划的安全策略会关注网络流量、电子邮件帐户、身份验证机制、管理服务器和其他外部连接。 本指南涵盖了大量的实际案例,每个标题都讨论了决策者在部署Windows 10PC时必须考虑的问题。虽然它涵盖了许多可用的参考样本,但这不是一个实际意义上的操作指南。 在大型企业中, IT人员应该包括能够管理这些步骤的安全专家。在没有专门IT人员的小型企业中,将这些职责外包给具有必要专业知识的顾问可能是最好的方法。 不过,在进行单个Windows设置之前,请花一些时间进行威胁评估。特别是,在发生数据泄露或其他与安全相关的事件时,要意识到自己的法律和监管责任,以下方法适用于所有规模的企业。 管理更新 对于任何Windows 10PC来说,最重要的一个安全设置是确保定期、按时安装更新。当然,这适用于所有现代计算设备,但微软在Windows 10中引入的“Windows即服务”(Windows as a
  • 无法通过Git Bash向Visual Studio Team Services进行身份验证(Unable to authenticate with Git Bash to Visual Studio Team Services)
    问题 我无法在Visual Studio Team Services(VSTS)上对我的远程存储库运行任何命令,因为身份验证失败。 我可以通过Visual Studio进行拉取等。 但是只能通过Visual Studio。 不能通过Git Bash或任何其他工具(如SourceTree)来实现。 回答1 如果要在Visual Studio之外使用其他Git客户端,则需要启用备用身份验证凭据。 要在Visual Studio Team Services(VSTS)中设置备用凭据,请单击右上角的名称/图标->安全->备用身份验证凭据 编辑:从VSTS添加更多与此相关的详细信息(来自备用凭据屏幕)... 备用认证凭证在浏览器外部运行的某些应用程序(包括Team Explorer Everywhere命令行客户端和git-tf实用程序)需要基本的身份验证凭据。 身份验证期间,其他应用程序无法正确使用用户名的电子邮件地址。 要使用这些应用程序,您需要启用备用凭据,设置密码以及选择以非电子邮件地址的形式设置辅助用户名。 请注意,不能使用备用凭据从Web浏览器或这些应用程序外部登录服务。 回答2 启用备用身份验证凭据并设置辅助用户名为您的Visual Studio Team Services帐户创建个人访问令牌,然后复制该令牌打开Git Bash并转到将存储库克隆到的文件夹
  • 使用Django实现单一登录(SSO)[关闭](Implementing Single Sign On (SSO) using Django [closed])
    问题 关闭。 此问题不符合堆栈溢出准则。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 8个月前关闭。 改善这个问题 我想使用Django为我们当前使用的多个应用程序实现单一登录(SSO)。 如何使用Django来实现呢? 回答1 我们正在使用OpenAM。 http://forgerock.com/openam.html OpenAM Cookie表示用户已通过身份验证。 为此的身份验证后端非常简单。 少于50行代码。 https://docs.djangoproject.com/zh-CN/3.1/topics/auth/customizing/#other-authentication-sources 我们编写了一些代码,向OpenAM服务器发出RESTful请求,以获取用户,组和角色信息。 然后,我们使用角色来确定用户的授权。 回答2 看看django-cas-provider + django-cas-consumer(或django-cas) 回答3 MamaCAS似乎是一个很好的解决方案。 (在撰写本文时,它已获得104颗星。) https://github.com/jbittel/django-mama-cas MamaCAS是Django中央身份验证服务(CAS)单一登录和单一注销服务器。 它实现了CAS 1.0
  • 错误TF30063:您无权访问…\ DefaultCollection(Error TF30063: You are not authorized to access … \DefaultCollection)
    问题 我在Visual Studio 2012的一个项目中使用了TFS预览(Team Foundation Service)。我的大多数项目中都使用了本地TFS服务器。 当我在使用TFS预览后使用本地TFS并返回使用TFS预览时,出现此错误: TF30063:您无权访问MyProject \ DefaultCollection。 如果我去团队→断开TFS的连接,然后再次连接到TFS预览,我可以看到一个“正在加载标识符”加载屏幕,但是最后我无法输入我的凭据到TFS预览(我Microsoft帐户),因此,仍然会出现TF30063错误。 我怀疑这与我的Microsoft帐户(即Live ID)有关。 我使用在TFS预览中使用的相同Microsoft帐户登录到Windows。 我已经使用其他Microsoft帐户登录到其他站点(Windows开发中心,MSDN等),但是我验证了是否注销这些服务并使用正确的Microsoft帐户重新登录,但在以下情况下仍会出现TF30063错误:我尝试从Visual Studio登录到TFS预览。 回答1 我通过在Visual Studio中使用“浏览器”->“其他Windows”->“ Web浏览器”来解决此问题。 Ctrl+Alt+R (或者在VS2010之前的VS版本中为* Ctrl+W, W *)导航到TFS页面并注销错误的帐户并重新登录。 对我来说
  • 从azure功能应用程序检索主机密钥(Retrieve the host keys from an azure function app)
    问题 我正在尝试使用Azure cli编写环境脚本。 我已经创建了一些功能应用程序,并且想要添加主机密钥或至少检索自动创建的默认密钥。 蔚蓝的cli对此完全没有支持。 在函数本身上似乎有一个api(它的文档似乎很稀疏),它使我可以获取密钥,但是您需要一个密钥才能使用它..那里没有帮助。 https://github.com/Azure/azure-webjobs-sdk-script/wiki/Key-management-API 例如:https://example-functions.azurewebsites.net/admin/host/keys?code=somecodeyoualreadyknow 我还看到了一些其他示例,这些示例使用webapps scm api下载包含密钥的json文件,但是我不确定如何使用此API进行身份验证。 我有一个服务主体(用户ID,密码,tenantid),我希望不必在脚本中添加其他身份验证方案。 回答1 步骤如下。 假设您已经具有Kudu部署凭据。 (听起来您已经知道该怎么做。您可以根据服务原理通过ARM调用来获取它,等等) 从kudu部署凭证中,您可以获得一个JWT,该JWT可让您调用Functions键API。 从Functions API中,您可以获得所有键(包括主键)。 这是一个powershell脚本
  • 在Azure Active Directory B2C中按组授权(Authorize By Group in Azure Active Directory B2C)
    问题 我试图弄清楚如何授权使用Azure Active Directory B2C中的组。 我可以通过用户授权,例如: [Authorize(Users="Bill")] 但是,这不是很有效,我看到的用例很少。 另一种解决方案是通过角色授权。 但是由于某种原因,这似乎不起作用。 例如,如果我给用户提供角色“ Global Admin”,则不起作用,请尝试: [Authorize(Roles="Global Admin")] 有没有一种通过组或角色进行授权的方法? 回答1 这将起作用,但是您必须在身份验证逻辑中编写几行代码才能实现所需的功能。 首先,您必须区分Azure AD(B2C)中的Roles和Groups 。 User Role非常具体,并且仅在Azure AD(B2C)本身内有效。 角色定义用户在Azure AD中具有的权限。 Group (或“ Security Group )定义用户组成员身份,可以向外部应用程序公开。 外部应用程序可以在安全组的顶部对基于角色的访问控制进行建模。 是的,我知道这听起来有点令人困惑,但这就是事实。 因此,第一步是在Azure AD B2C中对Groups进行建模-您必须创建组并将用户手动分配给这些组。 您可以在Azure门户(https://portal.azure.com/)中进行以下操作: 然后,回到您的应用程序
  • 如何在Portal的Azure BLOB存储中设置CORS?(How can I set CORS in Azure BLOB Storage in Portal?)
    问题 我们在Windows Azure上有一个Blob存储。 http://mytest.blob.core.windows.net/forms 我使用CloudBerry将一些文件上传到存储。 而且我可以通过浏览器成功下载文件。 这些文件是简单的文本文件,但是具有不同的文件扩展名。 例如, http://mytest.blob.core.windows.net/forms/f001.etx 我想通过jquery($ .get)下载文件,但是由于CORS失败。 如何在Portal的Azure BLOB存储中配置CORS? 而且,我也应该在客户端为CORS做些什么吗? 回答1 更新:在回答此问题时,Azure门户没有此功能。 现在按此处概述进行操作。 下面概述了添加UI之前执行此操作的方法。 如何在Portal的Azure BLOB存储中配置CORS? 如果需要,您可以始终以编程方式设置BORS存储的CORS规则。 如果您使用的是.Net Storage Client库,请从存储团队中查看此博客文章:http://blogs.msdn.com/b/windowsazurestorage/archive/2014/02/03/windows-azure-storage-introducing- cors.aspx。 用于从该博客文章中设置CORS设置的代码: private
  • 为什么作为订阅的共同管理员,我无法编辑Active Directory?(Why as a co-administrator of a subscription am I unable to edit the Active Directory?)
    问题 客户让我成为他的Azure订阅的共同管理员。 但是,我无法编辑他的Active Directory,即添加/编辑用户,创建应用程序等。 我为什么不能访问它? 我在想,该订阅可能归广告所有,而不是相反。 AD中的每个角色级别都允许什么? 有 全球管理员帐单管理员服务管理员用户管理员密码管理员 回答1 我认为此错误的主要原因是因为将具有Microsoft帐户的共同管理员添加到订阅中时,它会作为Guest用户类型添加到订阅AD中。 为了使您能够访问该AD,以便可以在AD上执行操作,您需要将用户类型从Guest更改为Member 。 我与我们产品的一位用户存在完全相同的问题,下面介绍的步骤解决了该问题。 若要更改用户类型,需要使用AD PowerShell Cmdlet。 该过程相当复杂,需要由您的客户来完成。 首先,请与您的客户联系,以确认他们自己是否使用Microsoft帐户登录门户。 如果是这样,则他们需要在其Azure AD中创建一个用户。 请参阅此线程以了解为什么需要这样做:PowerShell-使用Microsoft帐户连接到Azure Active Directory。 接下来,他们将需要使用此用户帐户登录,因为一个人需要在第一次登录时更改用户密码。 安装AD模块。 您可能会发现这些链接对此有用:https://msdn.microsoft.com/zh-cn
  • 微软特权访问管理
    2018-2022是私有云混合云在中国最火热的时代,私有云将在中国从摸索走向成熟阶段,随着云技术的火热,下一个企业必须要思考的将是信息安全的问题,现在企业都在导入云计算技术,建置更多的信息应用系统以从中获取信息化带来的价值。那么随着带来的一个隐患就是,管理员要管理的基础架构和应用系统数量越来越多,这时候管理员账户就变的很重要了,如何保证管理员账户能够安全,如果保证管理员账户的管理操作可控,可记录,如果保证云资源管理员和租户虚机的隐私问题,将是企业信息化接下来必须要考虑的安全点老王之前做企业咨询实施的时候发现国内企业信息化,发现有一些现象,企业IT部门的管理员,可以很轻而易举的获得多个高权限的管理账号,有些企业信息项目外包出去,外包人员需要的管理员账户,做完项目也不回收。导致了Domain Admins组有大量的用户,这其实是极大的一个安全隐患,越多的高权限账户就有越多的风险,Hacker或者内部恶意管理员只要随便破解找到一个管理员的账号密码,就可以利用这个账号访问所有的域内系统,如果没有虚拟机保护机制,还可以利用此账户去窥探任意租户虚拟机的内容。针对于这些云技术时代产生的安全隐患,微软在Windows Server 2016开始,正式引入 Privileged Access Management 特权访问管理的概念,PAM在老王看来,它不是指的某一个特定的技术
  • 使用ADAL C#作为机密用户/ Daemon服务器/服务器到服务器-401未经授权(Using ADAL C# as Confidential User /Daemon Server /Server-to-Server - 401 Unauthorized)
    问题 指未回答的问题: 401-使用带有Azure AD的REST API Dynamics CRM进行未经授权的身份验证 和 Dynamics CRM Online 2016-Web Api的后台驻留程序/服务器应用程序Azure AD身份验证错误 和 具有客户端凭据OAuth流程的Dynamics CRM 2016 Online Rest API 我需要azure云中的Web服务与Dynamics CRM Online 2016之间的通信,而无需任何登录屏幕! 该服务将具有一个REST api,该api会触发CRM上的CRUD操作(我还将实现身份验证) 我认为这称为“机密客户端”或“守护程序服务器”,或仅称为“服务器到服务器” 我在Azure AD中正确设置了我的服务(使用“代理权限=以组织用户身份在线访问动态”,没有其他选择) 我在VS中创建了一个ASP.NET WEB API项目,该项目在Azure中创建了WebService,并且还在CRM的Azure AD中输入了“应用程序” 我的代码如下所示(请忽略EntityType和returnValue): public class WolfController : ApiController { private static readonly string Tenant = "xxxxx.onmicrosoft.com"
  • SmtpException:无法从传输连接中读取数据:net_io_connectionclosed(SmtpException: Unable to read data from the transport connection: net_io_connectionclosed)
    问题 我正在使用SmtpClient库通过以下方式发送电子邮件: SmtpClient client = new SmtpClient(); client.Host = "hostname"; client.Port = 465; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.UseDefaultCredentials = false; client.EnableSsl = true; client.Credentials = new NetworkCredential("User", "Pass); client.Send("from@hostname", "to@hostname", "Subject", "Body"); 该代码在我的测试环境中可以正常工作,但是当我使用生产SMTP服务器时,该代码将失败,并显示SmtpException “发送邮件失败”。 内部IOException “无法从传输连接读取数据:net_io_connectionclosed”。 我已经确认防火墙不是问题。 客户端和服务器之间的端口打开得很好。 我不确定还有什么可能引发此错误。 回答1 编辑:超级Redux版本 尝试使用端口587而不是465。在技术上,不建议使用端口465。 一堆包嗅探后,我想通了。 首先