Graph Api y Autenticación


Graph Api

La librería Azure Active Directory Graph API permite realizar operaciones sobre los objetos existentes en el directorio activo.

  • Operaciones sobre Usuarios y Contactos (Usuarios Externos): Leer información de perfil así como actualizarla, creación y eliminación.
  • Operaciones sobre Roles, Grupos o Aplicaciones: creación, modificación y eliminación.
  • Operaciones sobre Dominios y Políticas.

Autenticación en Graph Api

En la entrada anterior Glosario de Directorio Activo Azure se describió la configuración de aplicaciones en el directorio activo. En esta entrada se va describir
diferentes maneras de obtener los token de autenticación vía las aplicaciones para poder realizar llamadas a la Graph Api. Existen diversas posibilidades:

  • Aplicación Nativa con Credenciales de Usuario:
                var appId = [Id of Application Native];
                var user = [User Id of AD];
                var password= [User Password of AD];
                var tenantId = [Id of AD];
                UserCredential userCredentials = new UserCredential(user, password);
                var addAuthority = new Uri(new Uri("https://login.microsoftonline.com/"), tenantId);
                AuthenticationContext authContext = new AuthenticationContext(addAuthority.AbsoluteUri);ddAuthority.Uri.AbsoluteUri);
                AuthenticationResult userAuthResult = authContext.AcquireToken(
                    "https://graph.windows.net",
                    appId,
                    userCredentials);
                Uri serviceRoot = new Uri(new Uri("https://graph.windows.net"), userTenantId);
                ActiveDirectoryClient userAdClient = new ActiveDirectoryClient(serviceRoot, async () => await Task.FromResult(userAuthResult.AccessToken));
    
  • Aplicación Nativa solicitando usuario y contraseña en una ventana del Navegador.
                var appId = [Id of Application Native];
                var returnUrl = [returnUrl of Aplication Web Native]
                var tenantId = [Id of AD];
                var addAuthority = new Uri(new Uri("https://login.microsoftonline.com/"), tenantId);
                AuthenticationContext authContext = new AuthenticationContext(addAuthority.AbsoluteUri);
                AuthenticationResult userAuthResult = authContext.AcquireToken(
                    "https://graph.windows.net",
                    appId,
                    new Uri(returnUrl)
                 );
                Uri serviceRoot = new Uri(new Uri("https://graph.windows.net"), userTenantId);
                ActiveDirectoryClient userAdClient = new ActiveDirectoryClient(serviceRoot, async () => await Task.FromResult(userAuthResult.AccessToken));</li>
    
  • Aplicación Web App/Web Api con Credenciales de Aplicación
                var appId = [Id of Aplication Web App];
                var appSecret = [Secret of Application Web App];
                var tenantId = [Id of AD];
                var clientCredential = new ClientCredential(appId, appSecret);
                var addAuthority = new Uri(new Uri("https://login.microsoftonline.com/"), tenantId);
                AuthenticationContext authContext = new AuthenticationContext(addAuthority.AbsoluteUri);
                AuthenticationResult userAuthResult = authContext.AcquireToken(
                    "https://graph.windows.net",
                    clientCredential);
                Uri serviceRoot = new Uri(new Uri("https://graph.windows.net"), tenantId);
                ActiveDirectoryClient userAdClient = new ActiveDirectoryClient(serviceRoot, async () => await Task.FromResult(userAuthResult.AccessToken));
    

Uso Grap Api

La Graph es una Api Rest que podemos acceder mediante llamadas HTTP con la cookie de Authorization (Bearer Token). En nuestro caso usamos un .NET Client Library que encapsula estas llamadas.
Por ejemplo obtenemos los roles y grupos de un usuario.

var userMemberships = userAdClient.Users.GetByObjectId(UserObjectId).MemberOf.ExecuteAsync().Result;
Anuncios
Esta entrada fue publicada en Azure, Seguridad. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s