How to config AuthenticationConfiguration?

Asking for help? Comment out what you need so we can get more information to help you!

apiVersion: apiserver.config.k8s.io/v1beta1
kind: AuthenticationConfiguration
# 使用 JWT 兼容令牌对 Kubernetes 用户进行身份认证的认证组件列表,允许的最大认证组件数量为 64。
jwt:
- issuer:
    # url 在所有认证组件中必须是唯一的。
    # url 不得与 --service-account-issuer 中配置的颁发者冲突。
    url: https://keycloak/realms/IAM 。
    # discoveryURL(如果指定)将覆盖用于获取发现信息的 URL,而不是使用 “{url}/.well-known/openid-configuration”。
    # 系统会使用所给的配置值,因此如果需要,“/.well-known/openid-configuration” 必须包含在 discoveryURL 中。
    #
    # 取回的发现信息中的 “issuer” 字段必须与 AuthenticationConfiguration 中的
    # “issuer.url” 字段匹配,并被用于验证所呈现的 JWT 中的 “iss” 声明。
    # 这适用于众所周知的端点和 jwks 端点托管在与颁发者不同的位置(例如集群本地)的场景。
    # discoveryURL 必须与 url 不同(如果指定),并且在所有认证组件中必须是唯一的。
    discoveryURL: https://keycloak/realms/IAM/.well-known/openid-configuration
    # PEM 编码的 CA 证书用于在获取发现信息时验证连接。
    # 如果未设置,将使用系统验证程序。
    # 与 --oidc-ca-file 标志引用的文件内容的值相同。
    certificateAuthority: /etc/kubernetes/keycloak-ca.crt
    # audiences 是 JWT 必须发布给的一组可接受的受众。
    # 至少其中一项必须与所提供的 JWT 中的 “aud” 声明相匹配。
    audiences:
    - kubernetes # 与 --oidc-client-id 一致。
    - account
    # 当指定多个受众时,需要将此字段设置为 “MatchAny”。
    audienceMatchPolicy: MatchAny
  # 用于验证令牌声明以对用户进行身份认证的规则。
  claimValidationRules:
    # 与 --oidc-required-claim key=value 一致
  - claim: email_verified
    requiredValue: true
    # 你可以使用表达式来验证声明,而不是仅仅靠 claim 和 requiredValue 来执行检查。
    # expression 是一个计算结果为布尔值的 CEL 表达式。
    # 所有表达式的计算结果必须为 true 才能使验证成功。
  - expression: 'claims.email_verified != true'
    # message 用来定制验证失败时在 API 服务器日志中看到的错误消息。
    message: email must valified
  - expression: 'claims.exp - claims.nbf <= 86400'
    message: total token lifetime must not exceed 24 hours
  claimMappings:
    # username 表示用户名属性的选项。
    # 这是唯一必需的属性。
    username:
      # 与 --oidc-username-claim 相同,与 username.expression 互斥。
      claim: "preferred_username"
      # 与 --oidc-username-prefix 相同,与 username.expression 互斥。
      # 如果设置了username.claim,则需要username.prefix。
      # 如果不需要前缀,可显式将其设置为 ""。
      prefix: "oidc"
      # 与 username.claim 和 username.prefix 互斥。
      # expression 是计算结果为字符串的 CEL 表达式。
      #
      # 1.  如果 username.expression 使用 “claims.email”,则必须在 username.expression
      #     或 extra[*].valueExpression 或 ClaimValidationRules[*].expression 中使用 “claims.email_verified”。
      #     与 username.claim 设置为 “email” 时自动应用的验证相匹配的示例声明验证规则表达式是
      #     “claims.?email_verified.orValue(true)”。
      # 2.  如果根据 username.expression 断言的用户名是空字符串,则身份认证请求将失败。
      expression: '"oidc/"+claims.preferred_username'
    # groups 代表 groups 属性的一个选项。
    groups:
      # 与 --oidc-groups-claim 相同,与 groups.express 互斥。
      claim: "user_groups"
      # 与 --oidc-groups-prefix 相同。与 groups.express 互斥。
      # 如果设置了 groups.claim,则需要 groups.prefix。
      # 如果不需要前缀,则显式将其设置为 ""。
      prefix: "oidc"
      # 与 groups.claim 和 groups.prefix 互斥。
      # expression 是一个计算结果为字符串或字符串列表的 CEL 表达式。
      expression: 'claims.user_groups.split(",")'
    # uid 表示 uid 属性的一个选项。
    uid:
      # 与 uid.expression 互斥。
      claim: 'preferred_username'
      # 与 uid.claim 互斥
      # expression 是计算结果为字符串的 CEL 表达式。
      expression: 'claims.preferred_username'
  # 应用于最终用户对象的验证规则。
  userValidationRules:
    # expression 是一个计算结果为布尔值的 CEL 表达式。
    # 所有表达式的计算结果必须为 true,用户才有效。
  - expression: "!user.username.startsWith('system:')"
    # Message 自定义验证失败时在 API 服务器日志中看到的错误消息。
    message: 'username cannot used reserved system: prefix'
  - expression: "user.groups.all(group, !group.startsWith('system:'))"
    message: 'groups cannot used reserved system: prefix'

when I use - --authentication-config=/etc/kubernetes/authentication-config.yaml
the apiserver can not started?

Cluster information:

Kubernetes version:
Cloud being used: (put bare-metal if not on a public cloud)
Installation method:
Host OS:
CNI and version:
CRI and version:

You can format your yaml by highlighting it and pressing Ctrl-Shift-C, it will make your output easier to read.