Compartir a través de


Registro de impresoras de impresión universal (UP)

1. Registro

1.1 Flujo

Flujo de registro

1.2 API

Las siguientes API están disponibles con el servicio global de registro de UP para registrar impresoras. Dirección URL base del servicio de registro up global:https://register.print.microsoft.com

La dirección URL completa será la combinación de la dirección URL base global y los puntos de conexión siguientes.

1.2.1 /register

El punto de conexión /register se usa para registrar una impresora. Hay 2 fases para el registro.

  1. Llamada de registro inicial para registrar la impresora

  2. Estado de registro de sondeo para la finalización de la solicitud de registro

1.2.1.1 Iniciando el registro

La primera fase consiste en iniciar una solicitud de registro con el servicio de registro global. Para ello, se emite una solicitud POST al punto de conexión /register con la carga de registro en formato JSON.

1.2.1.1.1 Solicitud HTTP
POST /api/{version}/register

{version} es la versión de la API o protocolo de registro up que usa la impresora. Las versiones admitidas actualmente son:

  • v1.0
1.2.1.1.2 Encabezados de solicitud

Para v1.0:

Nombre Descripción
Authorization Portador {token} requerido. La impresora debe iniciar sesión en el administrador en Microsoft Entra ID, siguiendo el flujo de código de dispositivo u otro flujo de autorización.
1.2.1.1.3 Request Content-Type
  • application/json
1.2.1.1.4 Carga de solicitud

La carga de la solicitud de registro estará en formato JSON con los siguientes valores (distingue mayúsculas de minúsculas):

Nombre del valor Tipo de valor Descripción Obligatorio
name string Nombre descriptivo de la impresora.
fabricante string Fabricante de la impresora.
modelo string Modelo de la impresora.
device_id string UUID del dispositivo físico de la impresora.
device_type string Tipo del dispositivo. Valores admitidos (sin comillas): "printer"
certificate_request DeviceCertRequest ( objeto) Solicitud de firma de certificado (CSR) X.509 para el certificado creado y usado por la impresora para identificarse. Consulte el Apéndice A.1 para obtener un ejemplo de codificación sobre cómo crear una CSR con la biblioteca .NET de BouncyCastle.

El objeto DeviceCertRequest tiene los siguientes valores (distingue mayúsculas de minúsculas):

Nombre del valor Tipo de valor Descripción Obligatorio
type cadena Propiedad que DEBE contener "pkcs10".
data string Propiedad que contiene una solicitud de certificado PKCS#10 codificada en base64 RFC4211. La solicitud de certificado DEBE usar un algoritmo de clave pública RSA con una clave de 2048 bits, un algoritmo de firma SHA256WithRSAEncryption y un algoritmo hash SHA256.
transport_key string Parte pública codificada en base64 de una clave asimétrica generada por el cliente.
1.2.1.1.5 Respuesta correcta

Si se ejecuta correctamente (202 Aceptado), la carga de respuesta de registro estará en formato JSON con los siguientes valores (distingue mayúsculas de minúsculas):

Nombre del valor Tipo de valor Descripción Obligatorio
registration_id string Identificador único que representa esta solicitud de registro. Se usará al sondear el estado del registro.
interval integer Tiempo de intervalo de sondeo (en segundos) para comprobar la finalización de la solicitud de registro.
1.2.1.1.6 Respuesta de error

En caso de error, se devolverán los siguientes códigos de estado HTTP junto con una carga de respuesta de error. La carga de respuesta de error contendrá un objeto JSON de error siguiendo el formato de la sección 2.

Códigos de estado HTTP

Código de estado HTTP Descripción
400 (Solicitud incorrecta) La solicitud no es válida o tiene un formato incorrecto. Consulte carga de respuesta de error para obtener más información. Corrija y reenvíe la solicitud.
500 (error interno del servidor) Se ha producido un error interno en el servicio. Consulte carga de respuesta de error para obtener más información. Vuelva a intentar la solicitud (si es posible, retry_timeout se establecerá).

Códigos de error

Códigos de error Descripción Código de estado HTTP
invalid_request La carga de la solicitud de registro tiene un formato incorrecto o no es válido. Esto suele ocurrir durante las fases de desarrollo. Consulte error_description para obtener más detalles. 400
device_code_error El servicio no pudo generar un par de código de usuario o dispositivo. 500
storage_error El servicio experimentó un error con el almacenamiento back-end. 500
service_error Error en el servicio. Consulte error_description para obtener más detalles. 500
Ejemplos de 1.2.1.1.7
1.2.1.1.7.5 Solicitud v1.0
POST https://register.print.microsoft.com/api/v1.0/register HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Content-Length: 1600

{
  "name": "Test Printer",
  "manufacturer": "Test Manufacturer",
  "model": "Test Model",
  "device_type": "printer",
  "device_id": "a188d9e8-8daa-44c9-862b-d6202bcf1b68",
  "certificate_request":
  {
    "type": "pkcs10",
    "data": "MIICpDCCAYwCAQAwYTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1JlZG1vbmQxFzAVBgNVBAoMDk1pY3Jvc29mdCBDb3JwMRIwEAYDVQQDDAlNaWNyb3NvZnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ1xUdFKBlFdS9dHqSrD7YS0ZJ6MgcYy5wI3P0wOWrDi28OCBLbt6HBg02KDh1MlmVrfIR2O6WWeJ59M63JuwEn2e2WoGnIb/M6NyANyBBmgZ3bjp39UJHbXtYYXm/VJrPcOLM09dST7KR1zAcD2J+rnK8ZVUtYuTl58D7R6zsrYshw5CwxfLYPXeXwiSoKhtEC8Xn1lz3mi5B2SdsFHdjaQb6E0tCG5zdrVzzhCEVPaoo4e9SCTB9jDNulTU1ZkHzGBk+UzlKv4APsclyGCTEgA01T6/ueBrVeKY9d4DYfz/pu4sm0Vf1E+2hggtwbBOP60sFtkfnKiwtVoDF1KC9AgMBAAEwDQYJKoZIhvcNAQELBQADggEBACdggPBJ5MoJJ3QjVYDypuJGWDVWBT0G4pXNZHNz5Q4OVDze7aCw3Sl78Qdzy++XsrSXjtyZyEb+A5R36YKTpzRBCHSOWyZkZKpxj0Uo8/+RzjzJ1uvtwfhelfQ6EVktFsz6a2hixcaa47bN/bjj9stJbbRsxjJwR1K5YI/i+9DaUE7r7VDXiknQ7/ZyEYquAqY/O/LEnFOGhkSvkLlFPTbnJ7fzURyNnQhmp8p3DMj5dXYgKfWPxViqvJChx8pJf9zM4TjzaTZIj08tSOp2LtWGeMNkFgYJH4URe3t4OPx5crkKj8i5aIW1Ulb8ezJLW1IU7W8hF71ooZWFTOsAnjQ=",
    "transport_key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydcVHRSgZRXUvXR6kqw+2EtGSejIHGMucCNz9MDlqw4tvDggS27ehwYNNig4dTJZla3yEdjullniefTOtybsBJ9ntlqBpyG/zOjcgDcgQZoGd246d/VCR217WGF5v1Saz3DizNPXUk+ykdcwHA9ifq5yvGVVLWLk5efA+0es7K2LIcOQsMXy2D13l8IkqCobRAvF59Zc95ouQdknbBR3Y2kG+hNLQhuc3a1c84QhFT2qKOHvUgkwfYwzbpU1NWZB8xgZPlM5Sr+AD7HJchgkxIANNU+v7nga1XimPXeA2H8/6buLJtFX9RPtoYILcGwTj+tLBbZH5yosLVaAxdSgvQIDAQAB"
  }
}
1.2.1.1.7.6 Respuesta v1.0
HTTP/1.1 202 Accepted
Date: Thu, 27 Jun 2019 22:47:34 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked

{
  "registration_id": "fbbd6371-7e88-4881-8818-8d2ea2e8fe88",
  "interval": 5
}
1.2.1.2 Obtención del estado de registro

Una vez aceptada correctamente la solicitud de registro, la impresora sondeará el /register punto de conexión para el estado de la solicitud de registro. La impresora debe sondear en función del valor de intervalo recibido en la respuesta de registro y debe proporcionar el registration_id objeto recibido.

1.2.1.2.1 Solicitud HTTP
GET /api/{version}/register?{Query Parameters}

{version} es la versión de la API o protocolo de registro up que usa la impresora.
Las versiones admitidas actualmente son:

  • v1.0

{Query Parameters} se especifican en la sección siguiente.

1.2.1.2.2 Encabezados de solicitud

Para v1.0:

Nombre Descripción
Authorization Portador {token} requerido. La impresora debe iniciar sesión del administrador en Microsoft Entra ID o seguir el flujo de código de dispositivo. Se puede usar el mismo token adquirido para la primera solicitud de registro.
1.2.1.2.3 Parámetros de consulta de solicitud
Nombre de parámetro Descripción Obligatorio
registration_id Identificador de registro recibido de la respuesta de la solicitud de registro.
1.2.1.2.4 Respuestas correctas

Se devolverán los siguientes códigos de estado HTTP para los siguientes escenarios de "éxito":

Código de estado HTTP Fase de registro
200(OK) Registro completado
202 (Accepted) Registro en curso: realice otra solicitud después de que haya transcurrido el tiempo del intervalo.

Cargas de respuesta

Registro en curso (202 aceptado):

La carga de respuesta de registro estará en formato JSON con los siguientes valores (distingue mayúsculas de minúsculas):

Nombre del valor Tipo de valor Descripción Obligatorio
interval integer Tiempo de intervalo de sondeo (en segundos) para comprobar la finalización de la solicitud de registro. Tenga en cuenta que el tiempo del intervalo de sondeo no será necesario cada vez.

Registro completado (200 OK):

La carga de respuesta de registro estará en formato JSON con los siguientes valores (distingue mayúsculas de minúsculas):

Nombre del valor Tipo de valor Descripción Obligatorio
cloud_device_id string UUID de la impresora en la nube que representa esta impresora.
certificado string Certificado X.509 con codificación Base64.
print_svc_url string Dirección URL del servicio Impresión universal (UP) que controla las operaciones de impresora.
notification_url string La dirección URL que debe usar la impresora para escuchar notificaciones (nuevo trabajo de impresión, cancelar trabajo de impresión, etc.).
mcp_svc_resource_id string Identificador de recurso del servicio UP. Se requiere al solicitar el token de OAuth para la comunicación con los servicios de notificaciones UP y UP.
device_token_url string Dirección URL de la entidad de token seguro (STA) que la impresora debe usar para obtener tokens para los servicios de notificaciones UP y UP.
1.2.1.2.5 Respuesta de error

En caso de error, se devolverán los siguientes códigos de estado HTTP junto con una carga de respuesta de error. La carga de respuesta de error contendrá un objeto JSON de error siguiendo el formato de la sección 2.

Códigos de estado HTTP

Código de estado HTTP Descripción
400 (Solicitud incorrecta) La solicitud no es válida o tiene un formato incorrecto. Consulte carga de respuesta de error para obtener más información. Se debe volver a iniciar el registro.
500 (error interno del servidor) Se ha producido un error interno en el servicio. Consulte carga de respuesta de error para obtener más información. Se debe volver a iniciar el registro.

Códigos de error

Códigos de error Descripción Código de estado HTTP
invalid_registration_id El identificador de registro proporcionado no es válido. Esto puede ocurrir si el identificador de registro se almacenó incorrectamente o si el registro de la impresora no se ha completado dentro del tiempo de espera del registro. Se debe volver a iniciar el registro. 400
device_already_exists El dispositivo que se está registrando ya está registrado. El Administración debe comprobar el portal up para ver si el dispositivo que se está registrando está presente. Si es así, podría ser una entrada obsoleta que el Administración olvidó eliminar o anular el registro. Se debe volver a iniciar el registro. 400
user_token_error El servicio no pudo obtener el token de usuario para realizar el registro. Se debe volver a iniciar el registro. 500
storage_error El servicio experimentó un error con el almacenamiento back-end. Se debe volver a iniciar el registro. 500
service_error Error en el servicio. Consulte error_description para obtener más detalles. Se debe volver a iniciar el registro. 500
Ejemplos de 1.2.1.2.6
1.2.1.2.6.3 Solicitud v1.0
GET https://register.print.microsoft.com/api/v1.0/register?registration_id=bb86db79-2918-
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Host: register.print.microsoft.com
1.2.1.2.6.4 En curso respuesta v1.0
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache

{
  "interval": 15
}
1.2.1.2.6.7 Respuesta completada v1.0
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 267
Content-Type: application/json; charset=utf-8

{
  "cloud_device_id": "7c907b43-d8f0-4e42-a279-1e37eb4fd2bf",
  "certificate": "MIID8jCCAtqgAwIBAgIQR2Y15zkurJhCGxcaQ0d7tjANBgkqhkiG9w0BAQsFADB4MXYwEQYKCZImiZPyLGQBGRYDbmV0MBUGCgmSJomT8ixkARkWB3dpbmRvd3MwHQYDVQQDExZNUy1Pcmdhbml6YXRpb24tQWNjZXNzMCsGA1UECxMkODJkYmFjYTQtM2U4MS00NmNhLTljNzMtMDk1MGMxZWFjYTk3MB4XDTE4MDExOTAwNTIxM1oXDTI4MDExOTAxMjIxM1owLzEtMCsGA1UEAxMkZjVlYjVmNWUtMDYyNC00YTNiLThmZjItNjQ5ZTAyM2ZiNzJkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApQc0Twp+vlT5Vc74zLoXbrufcIKnoW980OWFKHf7lRlRqjj9MWpea99j+3K8JQSoifXJvS5QzyjXrH9phsrfX84I258y6dM/aUadLYYKjO38wx9c1vQppZi1P3LcDaJiXPgNQ8omWCtDNoVwQlTUmB9Pq6h+V6S4P59Mq9cem6yEE7pu4DLqLSB68jexvLQnuGDfn6PsVUC3ML21zDmAr3QDikiZDe9Iy03IRrXvl6obj5QZtkGFbK9ueArFcWpymsEK
  FfVhrKL7ca/rAEFHsHacJYHkJNMw3Qzs0yMYZRsH/fS+eBebvQWUEujQ+BX8xZQX48ukwtC8R37RsqrLjwIDAQABo4HAMIG9MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwIgYLKoZIhvcUAQWCHAIEEwSBEF5f6/UkBjtKj/JkngI/ty0wIgYLKoZIhvcUAQWCHAMEEwSBEHXH6W+38IhBoi1uqlWcNhUwIgYLKoZIhvcUAQWCHAUEEwSBEAWT1qlxl5pLvXhzFTIfL2swFAYLKoZIhvcUAQWCHAgEBQSBAk5BMBMGCyqGSIb3FAEFghwHBAQEgQEwMA0GCSqGSIb3DQEBCwUAA4IBAQCXpFMa9DCgIIJTD3RlEyPN8WB/HgMkhLBqwtZugkmIn8D80ckuhrfa2jJfWkNxEfFXanjq9B4tAvkNt7vBXiYw+PKj8+CE5FgfUTNtIw3Q/06tnJBj20mz28ZNbdRUgXzxXiY7oZss54dbHH+7TFO9k9Pm1CuUOzLFX4LeC48wo/S6uN7JDeID6pQjcR00eYJ+gcD800AXBYXrqSreYhdtl1swcD71qgshELAo2qXu0kzuKj05GIB5SXFOoU+KhuB0LMuEZF5rsQPN4KcasGaAb/8MIORAxkYStNLQZQLYbDve/dUownbfruW/o3tnjJP0GA0gY/Ohv5ssgrCFsiBq",
  "print_svc_url": "https://print.print.microsoft.com/",
  "notification_url": "https://notification.print.microsoft.com/",
  "mcp_svc_resource_id":"https://print.print.microsoft.com",
  "device_token_url": "https://login.microsoftonline.com/common/oauth2/token"
}

1.2.1.3 Autenticación

Antes de registrar la impresora, debe autenticar al administrador en microsoft Entra ID, siguiendo el flujo de código de dispositivo u otro flujo de autorización. El token de acceso de administrador de impresora obtenido debe enviarse en el encabezado de autorización de la solicitud para registrar una impresora. Puede encontrar documentación de código de dispositivo y otros flujos de autenticación compatibles con microsoft Entra ID en Flujos de autenticación admitidos.

1.2.1.3.1 Parámetros de flujo de código de dispositivo

Puede encontrar documentación sobre la compatibilidad de Microsoft Entra ID con el flujo de código de dispositivo en flujo de código de dispositivo de OAuth 2.0. La client_id lista siguiente es temporal. Proporcionaremos información adicional en el futuro próximo.

Nombre de parámetro Descripción Obligatorio
tenant Use "Organizations" para el parámetro tenant.
client_id Use registered client ID para el client_id. Información adicional en Registro del cliente OEM.
scope Uso https://print.print.microsoft.com/.default para el ámbito
1.2.1.3.2 Solicitudes de flujo de código de dispositivo de ejemplo
1.2.1.3.2.1 Iniciar el flujo de código del dispositivo

Solicitud:

POST https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 103
Expect: 100-continue
Connection: Keep-Alive

client_id=<registered_client_id>&scope=https%3A%2F%2Fprint.print.microsoft.com%2F.default

Respuesta:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 473

{
  "user_code": "FMTB7B3WR",
  "device_code": "FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA",
  "verification_uri": "https://microsoft.com/devicelogin",
  "expires_in": 900,
  "interval": 5,
  "message": "To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code FMTB7B3WR to authenticate."
}
1.2.1.3.2.2 Recuperando el token de usuario

Solicitud:

POST https://login.microsoftonline.com/tenant/oauth2/v2.0/token HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 289
Expect: 100-continue

grant_type=device_code&client_id=<registered_client_id>&device_code=FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA

Respuesta: authorization_pending, el usuario aún no ha iniciado sesión.

HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 469

{
  "error": "authorization_pending",
  "error_description": "AADSTS70016: Pending end-user authorization.\r\nTrace ID: 60997c8b-15ed-4d12-99b6-6da879fd1400\r\nCorrelation ID: 7300aba9-1698-4a4e-b6dd-66459a828108\r\nTimestamp: 2019-09-26 23:13:43Z",
  "error_codes": [70016],
  "timestamp": "2019-09-26 23:13:43Z",
  "trace_id": "60997c8b-15ed-4d12-99b6-6da879fd1400",
  "correlation_id": "7300aba9-1698-4a4e-b6dd-66459a828108",
  "error_uri": https://login.microsoftonline.com/error?code=70016
}

Respuesta: success, el usuario ha iniciado sesión, se devuelve el token. Este token se puede usar en el encabezado de autorización necesario (descrito en la sección 1.2.1.1.2) al enviar una solicitud para registrar una impresora con impresión universal.

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1763

{
  "token_type": "Bearer",
  "scope": "https://print.print.microsoft.com/Print.Device https://print.print.microsoft.com/.default",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyIsImtpZCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50Lm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQvIiwiaWF0IjoxNTY5NTM5Mzc3LCJuYmYiOjE1Njk1MzkzNzcsImV4cCI6MTU2OTU0MzI3NywiYWNyIjoiMSIsImFpbyI6IkFTUUEyLzhNQUFBQVA1U1NzTklCYXRVQ2UxSGZXaEdvNHhqbUM4b2RCckNpeDNaN0dyZWJUMEE9IiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjQxN2FlNmViLWFhYzgtNDJjOC05MDBjLTBlNTBkZWJiYTY4OCIsImFwcGlkYWNyIjoiMCIsImdyb3VwcyI6WyIzMjVhNDljOS1mNjQ0LTQxNjEtODdmZS1kZTQ5ZGEyNDhjZTkiXSwiaXBhZGRyIjoiMTY3LjIyMC4yLjE4IiwibmFtZSI6Ik1hZGVsaW5lIFN0YWdlciIsIm9pZCI6ImIzZTE1ODM0LTAxZmUtNDIwNi05MjkwLTk5OTNiMzM1MWM2MSIsInB1aWQiOiIxMDAzN0ZGRUFDRjVBNUE1Iiwic2NwIjoiUHJpbnQuRGV2aWNlIiwic3ViIjoiN2hhQzVjdEZlYjZPVHBsMHROUDJmRDJVY3pWTFRjbTZlNkQ1eEZkOEpvYyIsInRlbmFudF9jdHJ5IjoiVVMiLCJ0aWQiOiJmMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQiLCJ1bmlxdWVfbmFtZSI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInV0aSI6Inp2N2EtdGRrR0VHQkFSMl9zWU1UQUEiLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.Nfz82GPdQUx6py2xwhVhI4hvpbLTdaaDSVFnGx4Eb3CeJHcQvCmmKoB9Lze7YITcEcLdxUkGEQGEXSh6M3yDrNP_hsoIROdWhe6RDjbYVPmJUL319lL4eNtQTJq8bKcJVbeM5SamlY1mBIhxH_sjL4TX0NN2RnDIuF_L1NSRW0IaHoZxzf257y0n7BqPROl3VpQ97wA8P-hhVBbfwwB9i-sLbsoCVszuE9JnHpgJPm6h9FDL9Px57ddTMZDvJchxOL5gUTA76gdRqUUzLROCMlz0R7vTJotl2RQnrzZBoNNoM9iJHL2KqQKuuezHEro1453lSRASiBkZHHEOFglzSg"
}

2. Estructura de respuesta de error

En el caso de las API anteriores, en caso de error, se devolverá la siguiente estructura de errores en la carga en formato JSON con los siguientes valores (distingue mayúsculas de minúsculas). Estas respuestas de error son principalmente para fines de desarrollo y depende del desarrollador qué mostrar al usuario, si hay algo.

Nombre del valor Tipo de valor Descripción Obligatorio
error string Cadena de código de error que se usa para clasificar el tipo de error que se produjo.
error_description string Mensaje de error específico que puede ayudar a identificar la causa principal del error. No
error_code integer Código de error adicional que puede ayudar a diagnosticar el problema. No
http_status_code integer Código de estado HTTP que se devolvió con esta respuesta de error. No
retry_timeout integer Número de segundos que la impresora debe esperar antes de volver a intentar la solicitud. No

Cada API anterior enumerará sus posibles cadenas de código de error.

2.1 Respuesta de ejemplo

{
  "error": "invalid_request",
  "error_description": "Missing required field device_type"
}

Conectar ivity with Universal Print service after printer registration

Universal Print admite la funcionalidad necesaria definida en PWG 5100.18 (IPP Infra). Se espera que las impresoras preparadas para impresión universal usen este protocolo para comunicarse con la impresión universal una vez que haya completado el proceso de registro de la impresora. Para asegurarse de que el autor de la llamada es una impresora con acceso, la impresora usará el token de acceso del dispositivo, tal y como se describe en Recuperación de tokens de acceso de impresora, como valor de portador para el encabezado HTTP Authorization .