Asp.net core 使用.NET核心api进行KeyClope反向通道登录?

Asp.net core 使用.NET核心api进行KeyClope反向通道登录?,asp.net-core,openid-connect,keycloak,Asp.net Core,Openid Connect,Keycloak,根据这个OpenID规范 OpenID Connect客户端启动的反向通道身份验证流是一个类似于OpenID Connect的身份验证流。但是,与OpenID Connect不同的是,OpenID提供者之间存在直接的依赖方通信,无需通过用户浏览器重定向。本规范具有消费设备(用户在其上与依赖方进行交互)和身份验证设备(用户在其上与OpenID提供商进行身份验证并授予同意)的概念。该规范允许拥有用户标识符的依赖方从OpenID提供者获取令牌。用户在消费设备上与依赖方启动流,但在认证设备上认证并授予同

根据这个OpenID规范

OpenID Connect客户端启动的反向通道身份验证流是一个类似于OpenID Connect的身份验证流。但是,与OpenID Connect不同的是,OpenID提供者之间存在直接的依赖方通信,无需通过用户浏览器重定向。本规范具有消费设备(用户在其上与依赖方进行交互)和身份验证设备(用户在其上与OpenID提供商进行身份验证并授予同意)的概念。该规范允许拥有用户标识符的依赖方从OpenID提供者获取令牌。用户在消费设备上与依赖方启动流,但在认证设备上认证并授予同意

我正在尝试使用KeyClope作为IdentityProvider对我的.NET核心api执行同样的操作。这是授权代码流的当前工作设置

var-oidcOptions=new-OpenIdConnectAuthenticationOptions()
{
AuthenticationType=OpenIdConnectAuthenticationDefaults.AuthenticationType,
ClientId=Application.Config.keydeposeconfig.Default.ClientId,
Authority=Application.Config.keydeposeconfig.Default.Authority,
RedirectUri=Application.Config.keydeposeConfig.Default.SiteManagementAuthRedirectUri,
ClientSecret=Application.Config.keydeposeconfig.Default.ClientSecret,
RequireHttpsMetadata=false,
ResponseType=OpenIdConnectResponseType.CodeIdToken,
Scope=“openid”,
TokenValidationParameters=新的TokenValidationParameters
{
validateisuer=true,
ValidateAudience=true,
RequireExpirationTime=true,
IssuerValidator=(发卡机构、securityToken、validationParameters)=>
{
if(issuer!=Application.Config.keydeposeconfig.Default.Authority)
抛出新的SecurityTokenInvalidIssuerException(“无效发行人”);
退货发行人;
},
ValidAudience=Application.Config.keydoveconfig.Default.ClientId
},
SignInAsAuthenticationType=“Cookies”,
通知=新的OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed=OnAuthenticationFailed,
RedirectToIdentityProvider=OnRedirectToIdentityProvider
}
};
使用OpenIDConnectAuthentication(oidcOptions);
我设法使用密码授权获得令牌,如下所示

HTTP POST {{KeyCloakUrl}}/realms/My-Realms/protocol/openid-connect/token
{
   grant_type: "password",
   client_id: "Keycloak_client_id",
   client_secret: "***",
   username: "username i created in Keycloak",
   password: "***",
   response_type : "code id_token",
   scope: "openid"
}
答复:

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI***********",
  "expires_in": 300,
  "refresh_expires_in": 1800,
  "refresh_token": "eyJhbGciOiJ********",
  "token_type": "bearer",
  "id_token": "eyJhbG**********",
  "not-before-policy": 0,
  "session_state": "c2803e20-bc04-4a9c-9b1a-d1fd3dfd1f22",
  "scope": "openid email profile"
}
问题:是否可以使用
id\u令牌
手动向.NET core api发出POST请求以验证请求,以及如何执行