Configuración en ADFS necesaria para consumir OData y ejemplo de consumo con Postman – Dynamics 365 Finance and Operations

En dynamics 365 Finance and Operations se usa la seguridad OAuth2 que significa que es seguridad por aplicación, para mayor información sobre este tipo de seguridad, puedes visitar la liga de oficial de Microsoft donde se explica a detalle en qué consiste este tipo de seguridad.

https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code

Ahora, para la configuración necesaria para consultar información de una entidad por OData en un ambiente OnPremise, son necesarios cuatro pasos.

Paso 1. Obtener el identificador de la aplicación y la llave.

Lo primero es tener la url de cómo accedemos a nuestro ambiente

https://pruebas365.eymsa.com.mx/namespaces/AXSF

Posterior a esto, configurar sobre el AD FS un Server Application, abrimos en el servidor donde se ha instalado el AD FS:

Agregamos una aplicación del tipo “server application”

Copiamos el valor de “Client Identifier” del wizard porque lo vamos a usar posteriormente, este valor es el equivalente al Application Id cuando se trata de un caso onCloud en lugar de uno OnPremise; en el parametro “Redirect URI” pegamos la url de nuestro cliente, sin la digonal final y hacemos click en el botón “Add”.

La siguiente pantalla nos va a proporcionar la llave, la copiamos de la copión “Generate a shared secret”

Después de dar clik en “siguiente”, nos muestra un resumen de la configuración que acabamos de realizar.

Paso 2. Otorgando permisos a la aplicación

El siguiente paso es en la pantalla de la aplicación, elegir en la sección “Microsoft Dynamics 365 for Operations On-Premises – Web API” y en la ventana que se abre, en la pestaña “Client Permissions” agregar la server application que creamos en el paso anterior.

Paso 3. Configurar identificador de aplicación dentro de D365FO

Dentro de nuestro D365FO buscamos la pantalla de “Aplicaciones de Azure Active Directory” dentro de Administración del sistema > Configurar > Aplicaciones de Azure Active Directory

Paso 4. Consumo con postman

Para el consumo desde postman de alguna entidad por OData, es necesario hacerlo en dos pasos, un POST que nos devuelva un token, que es el que indica que nuestra aplicación está autorizada para el consumo. Para lograr esto, con necesarios los siguientes parámetros:

  • Id de aplicación (Paso 1)
  • Llave (paso 1)
  • Url para pedir el token

El último elemento de la lista anterior, lo obtenemos consultando el archivo AXSF.Package.1.0.xml que se encuentra en la ruta:

C:\ProgramData\SF\AOS_223\Fabric\work\Applications\AXSFType_App38

Dentro del servidor del AOS, en el parámetro AADIssuerNameFormat y sustituyendo las llaves “{0}” por adfs/oauth/token, quedando similar a esto:

https://fs.xxxxxxx.com.mx/adfs/oauth2/token

Creamos en el body de postman seleccionando x-www-form-urlencoded y agregamos las llaves:

  • tenant_id (adfs)
  • client_id (Client Identifier de Paso 1)
  • client_secret (de “Generate a shared secret” de Paso 1)
  • resurce (url de AADIssuerNameFormat adicionando adfs/oauth/token)
  • grant_type (client_credentials)

Sustituimos los valores en postman para que quede algo similar a esto en el método POST y con esto nos devuelve el token, con esto ya podemos crear el método GET copiando ese token que nos devolvió el POST.

En el método GET, en “Headers” se incluye, las llaves:

  • Authorization (se coloca la palabra “Bearer” + un espacio + token otorgado en el POST)
  • Content-Type (application/json)

En este caso en específico, estoy consultando la entidad estándar llamada DimAttributeFinancialTag que es la que consulta las dimensiones financieras, y agrego el ¿cross-company=true para que me muestre las configuradas en todas las compañías.

postman GET

Un error común cuando estamos tratando de consultar los datos, es que nuestro token no sea correcto porque falte alguno de los parámetros del post (generalmente el tenan_id = adfs) y nos muestra que debemos enviar usuario y password y que java script no está soportado.
postman Error

,

Enviar información de D365F&O a un Data Lake

El cambio que representa el cómo se almacena y se accede a…

Grow IT, Best Place to Code 2020 "Categoría ISV"

Por segundo año consecutivo fuimos reconocidos como Best…