Identityserver4,参数问题。授权码流程

时间:2019-01-17 15:15:16

标签: c# identityserver4

我正在使用针对.netcore 2.2的IDserver4(2.3)实现一个现成的解决方案,该IDnet通过调用以下方式与FHIR客户端进行通信: url / api / openid / openapp?launch = 12345t6u-34o4-2r2y-0646-gj6g123456t5&iss = myservice&launchOrganization = tilt 使用带有HL7模拟作用域的示波器等。使用带有证书和所有挡板的IIS上的快速入门,流向令牌端点为访问和ID令牌提供服务的流程一直可以。

我的问题在于,客户端需要将一个参数传递给外部客户端,该参数指向服务器上存储或用作Json的某些患者数据的文件或服务器上的某物。

例如,可以通过任何合适的方式将参数与正文或标题一起传递吗?并且您是在授权或认证时执行的,还是与令牌一起执行的?让我们称之为上下文。该服务在我到达时将我关闭。这样说是“ TypeError:参数“ url”必须是字符串,而不是未定义的”

先谢谢了。 使用它来获得它:

public class CustomClaimInjection : ICustomTokenRequestValidator
{
    private readonly HttpContext _httpContext;

    public CustomClaimInjection(IHttpContextAccessor contextAccessor)
    {
        _httpContext = contextAccessor.HttpContext;
    }

    public Task ValidateAsync(CustomTokenRequestValidationContext context)
    {
        var client = context.Result.ValidatedRequest.Client;
        //client.Claims.Add(new Claim("sub", sub));  // this will be [client_sub]

        context.Result.CustomResponse = new Dictionary<string, object>
    {
        {"example-launchcontext", "https://url/" }
    };

        return Task.CompletedTask;

        //return Task.FromResult(0);
    }
}

1 个答案:

答案 0 :(得分:1)

我想我现在已经了解了您的问题,并且我想您希望成功进行身份验证以返回有关患者文件存储位置的其他信息。我将其存储在令牌中作为声明,因为它可以表示为关于主题(用户)的声明。这可以在IProfileService的已注册(通过依赖项注入)实现中完成。在“ GetProfileDataAsync”的实现中,您可以使用“ ProfileDataRequestContext”参数的属性“ IssuedClaims”来设置已发出的声明。这些声明将用于填充id令牌,这是您应该执行的操作。