.net - 将角色分配给私有(private)应用程序中的客户端 key

标签 .net azure authentication oauth-2.0 azure-ad-msal

在本地应用程序中,我们尝试访问我们在 Azure 中作为私有(private)应用程序托管的 API。我们通过 AAD 为用户分配角色,并且角色在应用程序 list 中定义

"appRoles": [    
...
    {
        "allowedMemberTypes": [
            "User",
            "Application"
        ],
        "description": "Read Only All",
        "displayName": "Read Only All",
        "id": "***",
        "isEnabled": true,
        "lang": null,
        "origin": "Application",
        "value": "ReadOnlyAll"
    }
],

我们已经创建了客户端 key ,同时我们可以按照MSAL client credential flows上的文档连接到公共(public)应用程序。但这样做我们就失去了分配角色的能力。此外,我可以连接到以下 Authenticating to Azure AD in daemon apps with certificates 的私有(private)应用程序但我们收到一条错误,指出客户端应用程序没有分配给服务应用程序的角色。因此,此时我们不知道如何从 Azure 获取 token 并将角色分配给客户端应用程序。

(据我们所知)没有直接的方法可以将客户端应用程序的角色分配给私有(private)应用程序,无论是通过证书和 secret 、API 权限还是授权的客户端应用程序。

总而言之,我的问题是是否可以将角色分配给从 Azure 上托管的服务应用程序读取数据的本地客户端应用程序。

感谢您的帮助!

最佳答案

如果您想将企业应用程序角色分配给您在“应用程序注册”中注册的应用程序,AFAK,我们无法在 Azure 门户上执行此操作,但我们可以通过 Azure AD Powershell 完成此过程,请尝试以下命令:

Connect-AzureAD 

$appObjId = "object id of the app that you want to assign role to"
$roleOwnerAppObjId = "object id of the role owner app" 

$sp = Get-AzureADServicePrincipal -ObjectId $roleOwnerAppObjId

$role= $sp.AppRoles | Where-Object { $_.DisplayName -eq "Read Only All" }

New-AzureADServiceAppRoleAssignment -ObjectId $appObjId -PrincipalId $appObjId -ResourceId $sp.ObjectId -Id $role.Id 

您可以在此处找到对象 ID: enter image description here

一旦我分配了角色,如您所见,当我请求访问 token 来访问角色所有者应用程序的资源时,将添加角色声明: enter image description here

enter image description here

如果有任何不清楚或误解的地方,请随时告诉我。

关于.net - 将角色分配给私有(private)应用程序中的客户端 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58451779/

相关文章:

c# - 为什么在没有代码更改的干净构建后会生成不同的 dll?

c# - 将 t4 脚本作为 resx 文件的自定义工具运行

.NET - WinForm 文本框 - Focus 和 SelectedText

.net - Visual Studio 安装项目忽略快捷方式参数中的变量

azure - 如何获得检测到的实体的置信度得分?

c - Azure Iot Hub C 客户端上传到 Blob 因 X.509 身份验证失败

python - 向 Pyramid 身份验证引入 "remember my name"和 "remember my password"选项

authentication - 你应该如何存储访问 token ?

spring - 如何有单独的身份验证源? (一个用于 Oauth2,一个用于基于表单的登录)

azure - 由于无法加载依赖程序集,Web 角色无法启动