PHP Azure OAuth JWT 应用角色

PHP Azure OAuth JWT App Roles

我已经在 Azure AD 中从清单中创建了一个应用程序,里面有几个 appRoles,我可以将用户分配给这些角色。用户完成单点登录后,return 发送到我的应用程序,然后我从他们的登录请求一个 JSON Web 令牌。问题是,我从 Azure 取回的令牌中没有列出分配的角色,因为它表明应该是 here.

是否有我遗漏的配置选项,或者是否有其他方法可以通过 Azure Graph 找出分配给他们的角色API?


更新:

在请求授权时将 resource 指定为应用程序 ID URI 之后 URL 我已经取得了一些进展。

我现在收到以下错误(在 return URL 中):

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

用户肯定已在应用的 Azure AD 控制面板中分配了角色,并且错误消息中的应用客户端 ID 与应用的客户端 ID 完全匹配。


应用程序配置:

用户分配了一个角色:

登录并return进入应用程序后出现错误消息:

@Phlip,能否尝试使用 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

更多信息,请参考此页面: https://msdn.microsoft.com/en-us/library/azure/dn919663.aspx 并使用此方法将成员添加到角色中:

Add-MsolRoleMember -RoleName "Company Administrator" -RoleMemberEmailAddress "user@contoso.com"

任何更新或结果,请告诉我。

下面的 C# 代码可以使用 AppRoleAssignedTo 属性查询您的应用程序已分配的用户。我不是php的家人,但我相信它有类似的方法。 ActiveDirectoryClient class 来自 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);
           }

如果人们正在寻找问题的解决方案,他们可能不会想听到这个答案,但我们从使用 OAuth 切换到 SAML,现在我们成功地在 SAML 响应中获得了应用程序角色。

我只能假设 Azure AD 上应用角色的 OAuth 实现完全被破坏了,因为除了切换到 SAML 之外我们没有做任何更改。