我有一个用户登录到我的Web应用程序,该应用程序已经为Office 365 Graph API验证了它们。我还需要代表用户执行一些只能通过Exchange Online Powershell完成的操作。因此,我想将一个访问令牌(使用passport.js或Go的oauth2生成)传递给脚本来执行这些操作。
我已经使用this helpful post来获得几乎所有的方式。它显示了如何将凭据传递到Exchange联机会话。但我无法弄清楚如何在没有客户端秘密的情况下获取访问令牌。我有客户端/应用程序ID和资源ID(使用链接帖子中显示的方法),但除非我弄错了,我还需要一个客户端密码。我错过了什么?
(对不起,我是所有这些领域的新手。请告诉我是否需要更多信息。)
答案 0 :(得分:0)
根据您的定义,您正试图访问用户' O365中的邮箱。
简单回答(这不是PoSH问题/限制): 访问/刷新令牌是用户特定的,就像他们在ADDS / AAD中的密码一样。
如果没有先将O365应用程序模拟(自动授予OnBehalfOfStuff)角色分配给用户或委派,您就无法完成。
从风险管理的角度考虑一下。如果任何AppDev都可以在没有用户/管理员同意的情况下获取所有用户IDAM令牌,那么这只是行业内的非首发。
配置模拟模拟可启用呼叫者,例如 服务应用程序,模拟用户帐户。来电者可以 使用与之关联的权限执行操作 模拟帐户而不是与之关联的权限 来电者的帐号。 https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-configure-impersonation
这需要您O365 / AAD全球管理员提前为您的帐户/您的应用帐户/服务帐户执行此操作。出于显而易见的原因,大多数安全人员真的不愿意随意地将此权利排除在外。然而,Exchange Application Impersonation可以作为范围。
从链接......
配置ApplicationImpersonation角色
当您或您的Exchanger服务器管理员分配时 ApplicationImpersonation角色,使用以下参数 New-ManagementRoleAssignment cmdlet:
•名称 - 角色分配的友好名称。每一次你 分配角色,在RBAC角色列表中创建一个条目。你可以验证 使用Get-ManagementRoleAssignment cmdlet进行角色分配。
•角色 - 要分配的RBAC角色。当你设置模仿时,你 分配ApplicationImpersonation角色。
•用户 - 服务帐户。
• CustomRecipientScope - 服务帐户的用户范围 可以冒充。 只允许服务帐户 模拟指定范围内的其他用户。如果没有范围 指定后,服务帐户被授予ApplicationImpersonation 角色对组织中的所有用户。您可以创建自定义 管理范围使用New-ManagementScope cmdlet。