使用Firely的.NET 8 C#控制台应用连接Azure FHIR服务的问题与解决
已解决:.NET 8控制台应用连接Azure FHIR服务授权失败问题
原问题描述
开发基于.NET 8的C#控制台应用,使用Fire.ly HL7.Fhir.R4(5.5.1)NuGet包连接Azure FHIR服务,实现患者增、查功能。通过Entra应用注册配置,使用ClientSecretCredential获取令牌后,调用client.Create<Patient>(patient)时触发FhirOperationException(Forbidden)授权失败错误。同时发现访问令牌的过期时间与请求时间一致,不确定是否正常。
获取令牌代码:
var clientSecretCredential = new ClientSecretCredential(tenantId: tenantId, clientId: applicationClientId, clientSecret: secretValue); AccessToken accessToken = await clientSecretCredential.GetTokenAsync(new TokenRequestContext(scopes: new[] { tokenEndpointAuthority }));
建立连接代码:
var mh = new HttpClientEventHandler(); mh.OnBeforeRequest += (object sender, BeforeHttpRequestEventArgs e) => { e.RawRequest.Headers.Add("Authorization", $"Bearer {accessToken.Token}" ); }; FhirClient client = new FhirClient( endpoint: endpointAuthority, messageHandler: mh, settings: new FhirClientSettings { PreferredFormat = ResourceFormat.Json });
最终解决流程
- 在Entra中创建应用注册;
- 进入Entra的企业应用,确认服务主体已创建(通常与应用注册同名);
- 进入FHIR服务的IAM页面,添加新角色分配。
注意:步骤3中可能遇到的问题——点击“选择成员”时仅显示当前用户,不显示安全主体,需完整粘贴主体名称才能找到并选中。完成配置后,可通过ADAL和MSAL成功连接客户端。
内容的提问来源于stack exchange,提问作者AndyW
相关产品推荐
相关产品推荐

