小编tou*_*ili的帖子

多个 Web api 的范围

我的 b2c 上有 2 个 web api(A 和 B)。他们每个人分别发布自己的权限(scopeA1,scopeA2)和(scopeB1,scopeB2)。

在我的 Web 应用程序(已经配置并授予了对 api 和 4 个范围的访问权限)上,为了在身份验证期间获取两个 api 的授权代码,我尝试将我的 OpenIdConnectAuthenticationOptionsin 范围属性设置为包括 4 个范围。我收到错误 AADB2C90146:请求中提供的范围“scopeA1 scopeA2 scopeB1 scopeB2 openid offline_access”为访问令牌指定了多个资源,但不受支持。

如果我只为 web api A 或 B 指定范围,那么它会按照这个链接工作

如何让我的 Web 应用程序使用这两个 Web api,即使已授予两者的权限

感谢帮助

azure-active-directory azure-ad-b2c

5
推荐指数
1
解决办法
1726
查看次数

邀请用户在AD B2C中创建后登录我的应用

遵循本教程, 我可以使用ADAL创建用户,从而使该方案在ADB2C上正常工作。(这是该场景上下文

我的目标是发送用户邀请(电子邮件)以使他加入我的appp。

我发现在graph.microsoft.com(MS图而不是AD图)上,有一个可用于此目的的邀请管理器,并且可能是如果您在B2C Azure门户上创建用户时触发邀请的方式。

  • 那么,是否需要为我的应用程序授予权限(与在AD图上获取访问令牌来管理用户的方法相同)?
  • 我是否应该以与AD相同的方式获取MS图上的令牌

    var authenticationContext = new AuthenticationContext(AuthString,false);
    var clientCred = new ClientCredential(ClientId,ClientSecret);
    var authenticationResult = authenticationContext.AcquireTokenAsync(ResourceUrl,clientCred);
    var令牌= authenticationResult.Result.AccessToken;

    这一次ResourceUrl指向https://graph.microsoft.com

这是我的OwinOpenID AuthenticationCodeReceived回调:

AuthorizationCodeReceived = async (context) =>
{
    // get authentication context
    string userObjectID = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
    AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{AuthenticationHelper.Tenant}", new NaiveSessionCache(userObjectID));


    ClientCredential credential = new ClientCredential(AuthenticationHelper.ClientId, AuthenticationHelper.AppKey);
    AuthenticationResult result = await authContext.AcquireTokenAsync("https://graph.windows.net", credential);
    // ----> Token used on the authorization header for AD user management and work properly …
Run Code Online (Sandbox Code Playgroud)

azure azure-ad-b2c

0
推荐指数
1
解决办法
624
查看次数