Как перейти с входа Azure B2C Owin в API графа AD - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь изменить информацию пользователей Azure B2C со своего сайта. Я новичок в Azure B2C и следовал этому примеру https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi, чтобы понять, как войти в систему моего пользователя с B2C. Это прекрасно работает. Но я не могу найти способ использовать токен или заявки, полученные при входе в систему, чтобы иметь возможность вызывать API Graph Graph для изменения некоторой информации на клиенте.

В примере я получил эту функцию после успешного входа в систему:

        /*
     * Callback function when an authorization code is received 
     */
    private async Task OnAuthorizationCodeReceivedAsync(AuthorizationCodeReceivedNotification notification)
    {
        // Extract the code from the response notification
        var code = notification.Code;

        string signedInUserID = notification.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
        TokenCache userTokenCache = new MSALSessionCache(signedInUserID, notification.OwinContext.Environment["System.Web.HttpContextBase"] as HttpContextBase).GetMsalCacheInstance();
        ConfidentialClientApplication cca = new ConfidentialClientApplication(ClientId, Authority, RedirectUri, new ClientCredential(ClientSecret), userTokenCache, null);
        try
        {
            AuthenticationResult result = await cca.AcquireTokenByAuthorizationCodeAsync(code, Scopes);
        }
        catch (Exception ex)
        {
            //TODO: Handle
            throw;
        }
    }

Но что дальше? Пример, который я нашел в API графа, не использует этот король логина.

Здесь конфигурация входа в OWIN:

        /*
    * Configure the OWIN middleware 
    */
    public void ConfigureAuth(IAppBuilder app)
    {
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                // Generate the metadata address using the tenant and policy information
                MetadataAddress = String.Format(AadInstance, Tenant, DefaultPolicy),

                // These are standard OpenID Connect parameters, with values pulled from web.config
                ClientId = ClientId,
                RedirectUri = RedirectUri,
                PostLogoutRedirectUri = RedirectUri,

                // Specify the callbacks for each type of notifications
                Notifications = new OpenIdConnectAuthenticationNotifications
                {
                    RedirectToIdentityProvider = OnRedirectToIdentityProviderAsync,
                    AuthorizationCodeReceived = OnAuthorizationCodeReceivedAsync,
                    AuthenticationFailed = OnAuthenticationFailedAsync,
                },

                // Specify the claim type that specifies the Name property.
                TokenValidationParameters = new TokenValidationParameters
                {
                    NameClaimType = "name"
                },

                // Specify the scope by appending all of the scopes requested into one string (separated by a blank space)
                Scope = $"openid profile offline_access {ReadTasksScope} {WriteTasksScope}"
            }
        );
    }

дд

1 Ответ

0 голосов
/ 29 июня 2018

Поскольку приложение Azure AD B2C не имеет доступа к API-интерфейсу Azure AD Graph.

Назовите это функцией GAP.

Сегодня единственный способ получить доступ к API-графику Azrue AD B2C Graph - это зарегистрировать отдельное приложение под Azure Active Directory и , а не Azure Active Directory B2C. Тот же портал, тот же пользователь, тот же Directory. Не меняйте «Каталог». Просто перейдите к «настоящему» Azure AD. Там под App registrations просто зарегистрируйте новое приложение, предоставьте ему application разрешения для Windows Azure Active Directory, сгенерируйте key и используйте поток Client Credentials в вашем веб-интерфейсе API.

Сегодня это единственный способ использовать Graph API в B2C. И это также в основном описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...