我的用户将他们的 O365 凭证交给第三方 CRM 网络服务,以同步日历和邮件。
网络服务使用 或 进行身份验证basic authentication
。OAuth
我
想阻止这种情况,但一个专用用户除外。
我想创建一个客户端访问规则但我不知道该-AnyOfProtocols
使用哪一个,选项是:
ExchangeActiveSync
ExchangeAdminCenter
ExchangeWebServices
IMAP4
OfflineAddressBook
OutlookAnywhere
OutlookWebApp
POP3
PowerShellWebServices
RemotePowerShell
REST
UniversalOutlook (Mail and Calendar app)
如果我看一下Azure AD/Azure Active Directory/监控>登录,我发现这里,我可以看到应用程序何时进行身份验证并显示以下内容:
应用程序:webCRM.日历.Exchange
资源:Office 365 Exchange 在线
也许ExchangeWebServices
?
关于如何通过其他方式实现此目的有什么建议吗?
更新:OAuth
仅支持协议ExchangeActiveSync
、、IMAP4
(POP3
关联) 所以ExchangeWebServices
是不可能的。
尝试过这个规则
New-ClientAccessRule -Name "Block 3rd part apps to auth" -Action DenyAccess -UsernameMatchesAnyOfPatterns "*MyID*" -Priority 6 -AnyOfProtocols ExchangeActiveSync, IMAP4 -AnyOfAuthenticationTypes OAuthAuthentication
不幸的是,Web 服务仍然可以使用 OAuth 和用户“MyID”登录邮箱。
答案1
我的解决方案是订阅Azure AD 高级 P1订阅(约 6 美元/月)
这将使你能够访问条件访问您可以在其中创建策略来阻止/允许应用程序,并可以允许/禁止用户/组。
非常直观,尽管你似乎也可以使用 powershell,New-AzureADMSConditionalAccessPolicy
(关联) 来自 AzureAD 模块。
当您选择允许/阻止哪些应用程序时,您会得到一个已知应用程序列表供您选择,令我惊讶的是,这个 CRM 第三方应用程序实际上就在列表中。显然 AD 记录并记住了您的用户连接了哪些应用程序!
在这种情况下,如果您的应用程序使用 MS Modern Authentication 进行身份验证,则实际上无法使用客户端访问规则,因为这不使用您可以允许/阻止的任何协议。
而且似乎实际的身份验证是从您的 IP 和您的浏览器完成的,而不是远程应用服务器!我假设这会创建一个令牌,该令牌将移交给保存它的远程应用服务器,以便可以用于将来的连接/同步。
我创建了一个虚构的 O365 用户,该用户被分配了编辑组织中需要与此 CRM 系统同步日历的用户的日历文件夹的权限。这是唯一有权使用此应用程序进行身份验证的 O365 用户。现在 CRM 系统只能访问日历文件夹,这也够糟糕的了,但还没有访问邮件文件夹那么糟糕,真糟糕!