1

I have a Sitecore 9.2 application and a feature project for Web API . In the API controller classes I need to get the access token issued from Azure AD after using the Azure AD login on my Sitecore Identity Server.

I am unable to access the token at present as I don't know how to access it. My current .NET Framework version is 4.7.2 .

1
  • Hey Nidhi and welcome to Sitecore community. To help you resolve your problem, please append your code / configs to your question May 4, 2021 at 6:31

1 Answer 1

1

You can access IdToken in SecurityTokenValidated or OnRedirectToIdentityProvider event within your ConfigureServices OWIN pipeline.

You may need to persist this IdToken in say Redis to access it elsewhere in your business logic.

We have examples of how this has been done, such as in this post and this one

Sample ConfigureServices snippet, original code on my repo. You can see the context.ProtocolMessage.IdToken is available for you.

public void ConfigureServices(IServiceCollection services)
{
    Ids4DemoIdentityProvider identityProvider = this._appSettings.Ids4DemoIdentityProvider;
    if (!identityProvider.Enabled)
        return;
    this._logger.LogDebug("Configure '" + identityProvider.DisplayName + "'. AuthenticationScheme = " + identityProvider.AuthenticationScheme + ", ClientId = " + identityProvider.ClientId, Array.Empty<object>());
    new AuthenticationBuilder(services).AddOpenIdConnect(identityProvider.AuthenticationScheme, identityProvider.DisplayName, (Action<OpenIdConnectOptions>)(options =>
    {
        options.SignInScheme    = "idsrv.external";
        options.ClientId        = identityProvider.ClientId;
        options.Authority       = identityProvider.Authority;
        options.MetadataAddress = identityProvider.MetadataAddress;
        options.CallbackPath    = "/signin-idsrv";
        options.Events.OnRedirectToIdentityProvider += (Func<RedirectContext, Task>)(context =>
        {
            Claim first = context.HttpContext.User.FindFirst("idp");
            if (string.Equals(first != null ? first.Value : (string)null, identityProvider.AuthenticationScheme, StringComparison.Ordinal))
                context.ProtocolMessage.Prompt = "select_account";
            return Task.CompletedTask;
        });
    }));
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.