Acr_values在ProfileService中不可用

时间:2019-05-17 11:44:03

标签: identityserver4

我的问题是关于在自定义ProfileService中读取Acr_Values。

因此,目前我在向用户添加TenantID声明时遇到麻烦。 我正在将IdentityServer4与ASP.net core 2.2和实体框架一起使用。

客户端的启动是这样配置的。 客户:

options.Events.OnRedirectToIdentityProvider = context =>
{
    // Set tenant host
    context.ProtocolMessage.AcrValues = $"tenant:{context.HttpContext.Request.Host.Host}";
    return Task.FromResult(0);
};

IdentityServer4 ProfileService:

public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
    ... code ommitted
    var user = await _userManager.FindByIdAsync(sub);
    if (user == null)
    {
        //Skip
    }
    else
    {
        var validatedRequestDictionary = context.ValidatedRequest.Raw.AllKeys.ToDictionary(s => s, s => context.ValidatedRequest.Raw[s]);

        ... code ommitted
    }
}

以某种方式,Acr_Values在登录期间可用,但在请求GetProfileDataAsync()之后不可用。

我在网站上阅读了此context.ValidatedRequest.Raw应该包含acr_values。只是没有,而且我一生也无法弄清楚为什么这里缺少这种方法,但是可以在上下文中登录时使用。

我已经搜索了关于SO的答案,但实际上没有任何东西可以帮助我。想知道是否有人在做什么我在这里做错了。

0 个答案:

没有答案