winforms 如何在C#中实现AAD多租户应用程序

yvt65v4c  于 2022-11-17  发布在  C#
关注(0)|答案(1)|浏览(250)

我正在尝试在AAD中创建一个多租户应用程序,任何组织都可以登录。我可以使用我的凭据获得授权令牌,当然这是我们的组织,因此它将工作。我正在尝试实现的是使用用户名和密码获得令牌,例如:
第一test@company1.com:测试1
您的位置:test@company2.com〉〉测试2〉例如test@company3.comp:test3等...
出现以下错误:AADSTS65001:用户或管理员尚未同意使用ID为[APP ID]的应用程序为此用户和资源发送交互式授权请求。
我已经从API权限中执行了授予管理员同意,但仍然出现错误。我错过了哪些设置?
这是我初始化IPublicClientApplication的方法:

var app = PublicClientApplicationBuilder
            .Create(clientId)
            .WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
            .WithDefaultRedirectUri()
            .Build();

        var scopes = new string[]
        {
            "offline_access",
            "email",
            "https://outlook.office.com/IMAP.AccessAsUser.All"
        };

        var authToken = app.AcquireTokenByUsernamePassword(scopes,email, 
                        password).ExecuteAsync();

此致。

mmvthczy

mmvthczy1#

我尝试在我的环境中重现相同的结果,结果如下所示

我创建了一个Azure AD多租户应用程序,如下所示:

我尝试通过Postman中的ROPC流生成访问令牌,方法是使用相同租户用户的凭据,参数如下:

POST https://login.microsoftonline.com/organizations/oauth2/token

client_id : xxxxxx-xxx-xxx-xxxx-xxxxxxxx
grant_type : password
scope : scope
username : user@********.onmicrosoft.com
password : ******

注意,ROPC流仅支持本地帐户(* 最初在创建应用程序的AAD租户中创建的Azure AD用户帐户 *)。它不支持其他租户用户/访客用户。

当我尝试使用其他租户用户的凭据生成令牌时,出现如下相同的错误:

参考:

Sign in with resource owner password credentials grant - Microsoft Entra

相关问题