首页 > 解决方案 > 使用 openId connect 如何向请求 c# 添加声明

问题描述

我正在使用 openId 连接来验证用户

services.AddAuthentication(sharedOptions => { })
                .AddCookie().AddOpenIdConnect("QuickBooks", "QuickBooks", openIdConnectOptions =>
                {
                    openIdConnectOptions.Authority = "QuickBooks";
                    openIdConnectOptions.UseTokenLifetime = true;
                    openIdConnectOptions.ClientId = qbclientId;
                    openIdConnectOptions.ClientSecret = qbSecret;
                    openIdConnectOptions.ResponseType = OpenIdConnectResponseType.Code;
                    openIdConnectOptions.MetadataAddress = qbMetaAddress;
                    openIdConnectOptions.ProtocolValidator.RequireNonce = false;
                    openIdConnectOptions.SaveTokens = true;
                    openIdConnectOptions.CallbackPath = "/signin-oidc";
                    openIdConnectOptions.ClaimActions.MapUniqueJsonKey("realmId","realmId");
                    openIdConnectOptions.ClaimActions.MapUniqueJsonKey("id_token", "id_token");
                    openIdConnectOptions.GetClaimsFromUserInfoEndpoint = true;
                    openIdConnectOptions.Scope.Add("openid");
                    openIdConnectOptions.Scope.Add("phone");
                    openIdConnectOptions.Scope.Add("email");
                    openIdConnectOptions.Scope.Add("address");
}

我想用 realmId 检索用户数据

在他们的请求中是可选的声明

可选的。一个 JSON 对象,其中包含您的应用程序正在请求的一组用户声明。这些声明要么在 ID 令牌中返回,要么在 UserInfo 响应中返回。可用的索赔包括:

realmId — 用户关联的特定 QuickBooks 公司的领域 ID。

"id_token": { "realmId": null }

这就是他们的示例请求 url 的样子。如何使用 OpenID connect 来请求索赔?

https://appcenter.intuit.com/connect/oauth2?
    client_id=Q3ylJatCvnkYqVKLmkxxxxxxxxxxxxxxxkYB36b5mws7HkKUEv9aI&
    scope=openid%20email&
    redirect_uri=https%3A%2F%2Fwww.mydemoapp.com%2Foauth-redirect&
    response_type=code&
    state=138r5719ru3e1&
    claims=%7B%22id_token%22%3A%7B%22realmId%22%3Anull%7D%7D

标签: c#openid-connectopenid

解决方案


推荐阅读