2016-03-18 30 views
5

Ho creato un'applicazione in un Azure AD da un manifest con più appRoles all'interno di esso e posso assegnare utenti a questi ruoli. Dopo che un utente ha completato il single sign on, ritorna alla mia applicazione e io richiedo un token Web JSON dal loro login. Il problema è che non ci sono ruoli assegnati elencati nel token che torno da Azure, poiché suggerirebbe che ci sia il here.PHP Azure OAuth JWT App Ruoli

Esiste un'opzione di configurazione mancante oppure esiste un modo alternativo per scoprire il ruolo assegnato tramite l'API Azure Graph?


Aggiornamento:

Dopo aver specificato il resource come l'App ID URI quando si richiede l'URL di autorizzazione sono riuscito a ottenere un po 'più lontano.

ora sto tornando il seguente errore (l'URL di ritorno):

"The signed in user '<user email>' is not assigned to a role for the application '<app client id>'." 

L'utente ha sicuramente stato assegnato un ruolo nel pannello di controllo AD Azure per l'applicazione e il client App ID nel messaggio di errore corrisponde esattamente l'id del client dell'app.


Applicazione config:

Azure AD Application config screen

utente assegnato un ruolo:

Azure AD Application user role assignments

Messaggio di errore dopo l'accesso e il ritorno alla app:

Azure AD Authentication error message

+0

Ecco una guida http: //www.dushyantgill.com/blog/2014/12/10/ruoli-basato-accesso-controllo-in-cloud-applicazioni-usando-azzurro-annuncio /, se ti aiuterà. –

+0

Grazie Gary, ma questa è in realtà la guida che ho già utilizzato e, per quanto ne so, l'ho seguita esattamente. L'unica eccezione è che la mia app web è scritta in PHP. –

risposta

0
non

Probabilmente la risposta la gente vuole sentire se stanno imbattersi in questa discussione alla ricerca di una soluzione al problema, ma siamo passati da utilizzare OAuth per SAML e noi ora ottenere con successo ruoli app nella risposta SAML .

Posso solo supporre che l'implementazione OAuth dei ruoli delle app su Azure AD sia completamente interrotta perché non è stato modificato nulla, tranne il passaggio a SAML.

1

@ Phlip, Potrebbe tentare di impostare l'autorizzazione dell'applicazione tramite PowerShell?

#1.down load Azure AD powershell and login in using your user in AD 
$msolcred=get-credential 
connect-msolservice -credential $msolcred 

#2. get principal Id 
$ClientIdWebApp = '5b597c35-**-**-ad05-***' 
$webApp = Get-MsolServicePrincipal –AppPrincipalId $ClientIdWebApp 

# 3. use Add-MsolRoleMember to add it to “Company Administrator” role). 
Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberType ServicePrincipal -RoleMemberObjectId $webApp.ObjectId 

Per ulteriori informazioni, si prega di fare riferimento a questa pagina: https://msdn.microsoft.com/en-us/library/azure/dn919663.aspx e utilizzare questo metodo per aggiungere membro in ruolo:

Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberEmailAddress "[email protected]" 

Eventuali aggiornamenti o risultati, per favore fatemelo sapere.

+0

Ciao Will, ho seguito questi passaggi ma non riesco ancora ad andare oltre. C'è un modo per cercare quale ruolo è stato assegnato a un utente per un'applicazione con gli strumenti di Azure AD PowerShell, così posso confermare che sono realmente assegnati? E c'è un modo per assegnare qualcuno se non provengono dagli strumenti di Powershell? –

+0

@PhilipPryce, come noto, un altro approccio è Graph API. Fare riferimento a questa API (https://graph.microsoft.io/en-us/docs/api-reference/beta/resources/approleassignment) per verificare le informazioni assegnate. Inoltre, ti consiglio di fare riferimento a questo documento sulle spiegazioni per Assegnazione utente app e Autorizzazione app e Ruoli app (https://www.microsoftpressstore.com/articles/article.aspx?p=2473127&seqNum=3). Il documento ha spiegato il messaggio di errore simile a quello fornito. –

+0

@PhilipPryce, consiglio inoltre di verificare se l'utente si trova nel gruppo di directory. Si prega di aggiungere utente al gruppo se non è stato aggiunto al gruppo di directory. –

0

Il codice C# seguente può interrogare gli utenti assegnati che l'applicazione utilizza con l'attributo AppRoleAssignedTo. Non sono una famiglia con PHP, ma credo che abbia il metodo simile. La classe ActiveDirectoryClient proviene da Active Directory Graph Client Library.

var Serprincipal = activeDirectoryClient.ServicePrincipals.Where(IServicePrincipal => IServicePrincipal.AppId.Equals("app client id")).ExecuteAsync().Result.CurrentPage.ToList(); 
      var sp = Serprincipal.FirstOrDefault(); 
      var userAssignments = (sp as IServicePrincipalFetcher).AppRoleAssignedTo.ExecuteAsync().Result.CurrentPage.ToList(); 
      foreach (IAppRoleAssignment assignedUser in userAssignments) 
      { 
       Console.WriteLine("UserId: {0} Name: {1} ObjectType: {2} ", assignedUser.PrincipalId, assignedUser.PrincipalDisplayName, assignedUser.ObjectType); 
      }