问题描述
我们有一个本地(自托管)应用程序,它支持通过提供 SMTP 邮件服务器设置向用户发送电子邮件通知。我们的用户都在 Azure AD 中,并且是此本地应用程序的唯一用户。我们的用户希望能够接收来自此应用的电子邮件通知。
实现这一目标的推荐/最佳实践方法是什么?理想情况下,该解决方案不需要任何额外的订阅或增加的成本。如果可以将发送电子邮件地址标记为与其所来自的应用服务相匹配,那就太好了。
以下是我想出的一些选项:
- 在 Azure AD 中创建一个专门用于发送电子邮件的新用户
- 看起来很浪费,我们按用户按月收费
- 使用现有用户(即我自己的用户)向 SMTP 服务器提供授权
- 而不是将我自己的用户凭据与此绑定,如果我更改密码就会破坏
- 使用完全不同的电子邮件帐户(例如 gmail?)发送电子邮件
- 与 Azure AD 租户完全没有关系,其他人更难管理
- Azure 中的一些现有方法/服务用于此目的(如果存在)
解决方法
这是我对你的案子的看法。
我看了这个document,发现我们可以使用API Key来初始化'new SendGridClient',并且提到我们可以将这个key存储到azure key Vault中。
因此,如果您只是想使用 azure 广告来实现保护本地应用免受未经授权的用户攻击的目标,您可以尝试我的想法。首先,在 azure 门户中创建 azure 密钥保管库,您可以创建一个新密钥来存储您的 SendGrid Api 密钥。接下来创建一个用于实现身份验证的 azure 广告应用程序,例如“ROPC”流程(使用用户帐户和密码获取访问令牌)。现在我们可以在 azure 密钥保管库中设置访问策略,添加 azure 广告应用程序和您的所有用户帐户,以便每个人都可以通过该 azure 广告应用程序访问 API 密钥。之后,您的应用就可以发送电子邮件了。