通用打印 (UP) 打印机客户端 ID 注册

所需的 OEM 打印机客户端应用程序 API 权限

通用打印支持 Azure 颁发的 OAuth2 授权访问令牌。 开发通用打印就绪打印机需要 OEM 使用所需的权限集向 Azure 注册客户端应用程序。 OAuth2 定义 2 种类型的权限 请求。

委托的范围权限

作用域 显示字符串 说明 需要管理员同意
Printer.Create 创建并注册新打印机。 允许应用程序代表已登录用户创建和注册打印机。

应用程序范围权限

作用域 显示字符串 说明 需要管理员同意
Printer.Read 读取帐户有权访问的打印机。 允许应用程序在没有登录用户的情况下读取打印机。
PrinterProperties.ReadWrite 读取和写入帐户有权访问的打印机属性和属性。 允许应用程序在没有登录用户的情况下读取和写入打印机属性和属性。
PrintJob.ReadWriteBasic 读取和写入打印作业元数据。 允许应用程序在没有登录用户的情况下读取和写入用户打印作业的元数据。
PrintJob.Read 读取打印作业元数据和有效负载。 允许应用程序在没有登录用户的情况下读取用户的打印作业的元数据和有效负载。

OEM 打印机客户端应用程序注册

  1. 使用公司的应用开发租户创建多租户应用。
  2. 配置多租户应用以请求上面定义的所需权限范围集。
    • Printer.Create [委托]
    • Printer.Read [应用程序]
    • PrinterProperties.ReadWrite [应用程序]
    • PrintJob.ReadWriteBasic [应用程序]
    • PrintJob.Read [应用程序]

注册新应用程序

new app registration

completing the registration

复制已注册的应用程序 ID 供以后使用

save client ID

设置应用程序身份验证设置

configure app auth setting

使用 Azure 门户 添加所需的 API 权限

add permissions

单击“添加权限”按钮后,浮出控件将显示在右侧。 在浮出控件中,选择“Microsoft API”。

Microsoft API

可能需要在浮出控件中向下滚动才能找到“通用打印”

Universal Print API

添加上面提及的权限。

Delegated permissions

Application permissions

添加所需的权限时,应用程序权限应如下所示:

API permissions

如果要查找配置 API 权限的另一种方法,请参阅 “备用选项 ”。

更新 OEM 打印机客户端应用程序发布者

默认情况下,已注册的应用程序将具有“未验证”发布者。 如果保持不变,客户将在权限许可对话框中看到“未验证”。 请遵循 操作方法:配置应用程序的发布者域 以设置应用程序发布者。

有关快速参考,核心步骤包括:

application branding page

updated application domain

注意

将此打印机客户端应用程序 ID 集成到打印机上运行的代码中后,首次使用此 ID 的打印机在客户租户中注册到通用打印时,系统会提示管理员istrator 同意此应用程序。

当发布者域更新到已验证的域时,应用程序权限请求同意对话框将显示已验证的域值。

application admin consent

示例 OAuth 2.0 设备身份验证请求

完成上述步骤后,可以通过向 HTTP 正文语法发出 HTTP POST 请求来 https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode 请求验证

  • client_id={registered printer client ID}&scope=https%3A%2F%2Fprint.print.microsoft.com%2F.default
POST https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com

client_id=3e41cb36-3180-4566-bf3d-51ec873419e5&scope=https%3A%2F%2Fprint.print.microsoft.com%2F.default

用于添加所需 API 权限的备用选项

app manifest

  1. 在清单中查找 requiredResourceAccess 部分
  2. 将以下必需的 API 权限复制并粘贴到清单中。 最简单的方法是替换清单的整个 requiredResourceAccess 部分。
"requiredResourceAccess": [
    {
        "resourceAppId": "da9b70f6-5323-4ce6-ae5c-88dcc5082966",
        "resourceAccess": [
            {
                "id": "3e306194-d6c5-43ad-afbb-0e7b16a9c10b",
                "type": "Scope"
            },
            {
                "id": "1c90a3a7-465b-49c4-adcc-c8ac83d3d3f8",
                "type": "Role"
            },
            {
                "id": "2b1bdd6b-9a0f-47c6-a806-b3e20cfd07a8",
                "type": "Role"
            },
            {
                "id": "b695614a-52ec-4835-9e13-bdf5ff4c7448",
                "type": "Role"
            },
            {
                "id": "11f87dac-027f-4d76-bd29-1ea1536b93da",
                "type": "Role"
            }
        ]
    }
],
说明
范围 此资源访问权限定义为使用委派权限范围。
角色 此资源访问权限定义为使用应用程序权限范围。
da9b70f6-5323-4ce6-ae5c-88dcc5082966 Azure 全球云中的通用打印 ID。
3e306194-d6c5-43ad-afbb-0e7b16a9c10b Printer.Create 权限的 ID。
1c90a3a7-465b-49c4-adcc-c8ac83d3d3f8 PrinterProperties.ReadWrite 权限的 ID。
2b1bdd6b-9a0f-47c6-a806-b3e20cfd07a8 Printer.Read 权限的 ID。
b695614a-52ec-4835-9e13-bdf5ff4c7448 PrintJob.Read 权限的 ID。
11f87dac-027f-4d76-bd29-1ea1536b93da PrintJob.ReadWriteBasic 权限的 ID。

add permission scopes to manifest

  • 保存更改。