【问题标题】:Azure Active directory API permissionsAzure 活动目录 API 权限
【发布时间】:2020-03-05 10:08:10
【问题描述】:

我有一个场景,我想使用 Graph API 从 Exchange 检索日历预订/会议。这些会议只能在该房间的控制/触摸面板上运行的应用程序中可用。为此,我在 Azure AD 中注册了一个应用程序,并使用了具有必要 API 权限的 MSAL 的 .NET PublicClientApplication,即需要管理员同意的 Calendars.Read,并且我在应用程序中使用设备代码流,每当我尝试运行应用程序。

我发现也可以配置一个代表应用程序而不是用户的 ConfidentialClient。此外,这需要管理员的事先同意。

问题:

  1. 不确定哪种类型的身份验证机制最适合此场景?
  2. 是否可以为例如 API 设置权限? “Calendars.Read”为特定帐户工作?就像在这种情况下,只是为了那个房间

【问题讨论】:

    标签: azure microsoft-graph-api


    【解决方案1】:

    不确定哪种类型的身份验证机制最适合此场景?

    我认为它们都可以满足您的要求,为了安全,我建议您使用选项一。需要注意的一点,如果你使用的是授权码流Calendars.Read的委托权限,用户需要登录App,然后App代表用户进行操作,本质上权限来自用户。

    如果您使用应用程序权限Calendars.Read,它使用客户端凭据流,权限来自应用程序,这意味着房间中的每个人都可以使用该应用程序检索日历预订/会议。

    是否可以为例如提供 API 权限? “Calendars.Read”为特定帐户工作?就像在这种情况下只是为了那个房间

    不,您不能让 API 权限仅适用于特定帐户。

    【讨论】:

    • 感谢您的建议。我注意到对于 publicClientApplication,如果我已经使用 AcquireTokenByUsernamePassword() 方法登录,然后使用 devicecodeprovider 实例化了一个图形客户端,它不会弹出显示设备代码的窗口。这可能是因为它已经在缓存中找到了一个用户令牌。
    • @adhiman 我不建议你使用 AcquireTokenByUserNamePassword(),它使用 ROPC 流,不安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多