如何使用oidc和Azure应用程序配置kubernetes以仅允许使用指定的安全组进行身份验证

GuiFP

我正在尝试在我们的(常规而非AKS)kubernetes群集和Azure AD之间设置SSO。由于我不知道如何将令牌转发到kube-dashboard,因此我目前正在尝试在计算机上安装kubectl二进制文件。当不涉及任何组,但是我们要按安全组过滤(AAD上的帐户是从我们的本地Active Directory同步的)时,它就可以工作,不涉及kube RBAC。

安装程序的灵感来自https://medium.com/@olemarkus/using-azure-ad-to-authenticate-to-kubernetes-eb143d3cce10https://docs.microsoft.com/fr-fr/azure/aks/azure -ad-integration

  • 适用于kube api服务器的Web应用程序,配置为使用应用程序ID公开其API(添加范围等...):abc123
  • 客户端kubectl的本机应用程序,配置为通过Web应用程序添加了api权限,应用程序ID为:xyz456
  • 作为api服务器yaml清单,我添加:

- --oidc-client-id=spn:abc123

- --oidc-issuer-url=https://sts.windows.net/OurAADTenantID

  • 配置kubectl二进制文件:
kubectl config set-cluster test-legacy-2 --server=https://192.168.x.y:4443 --certificate-authority=/somelocation/ca.pem
kubectl config set-credentials [email protected] --auth-provider=azure --auth-provider-arg=environment=AzurePublicCloud --auth-provider-arg=client-id=xyz456 --auth-provider-arg=tenant-id=OurAADTenantID --auth-provider-arg=apiserver-id=abc123

同样在Azure客户端应用清单中,必须指定:

"allowPublicClient":true,

"oauth2AllowIdTokenImplicitFlow":true

否则出现错误“无法获取令牌:获取新的新令牌:等待设备代码身份验证完成:autorest / adal / devicetoken:检索OAuth令牌时出错:未知错误”https://github.com/MicrosoftDocs/azure-docs/issues/10326上找到

当尝试过滤我根据https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens在JWT中找到的某个安全组时,问题开始

我收到了格式错误,即使JWT Azure向我发送的确包含正确格式的组(字符串的json数组)

配置:

  • 在azure Web应用程序中,清单显示了我的JWT中的组:

"groupMembershipClaims": "SecurityGroup",

  • 是api服务器yaml清单:

- --oidc-groups-claim=groups

- --oidc-required-claim=groups=bbc2eedf-79cd-4505-9fb4-39856ed3790e

此处的字符串是我的目标安全组的GUID。

我正在接收error: You must be logged in to the server (Unauthorized)kubectl的输出,而kube api服务器日志向我提供了这一点authentication.go:62] Unable to authenticate the request due to an error: [invalid bearer token, [invalid bearer token, oidc: parse claim groups: json: cannot unmarshal array into Go value of type string]]

但是我不明白为什么当我解码我拥有的JWT时为什么不开心

"groups": [
    "00530f35-0013-4237-8947-6e3f6a7895ca",
    "bbc2eedf-79cd-4505-9fb4-39856ed3790e",
    "17dff614-fd68-4a38-906c-69561daec8b7"
  ],

据我所知,这是一个格式良好的字符串json数组...

为何api服务器抱怨JWT?

GuiFP

好吧,必填声明必须是字符串,而不是字符串数组

但是我找到了解决方法。

  • 不要使用oidc-groups-claim和oidc-required-claim
  • 在Azure中,转到API服务器应用程序的属性。
  • 在“需要用户分配”中选择是
  • 在“用户和组”中,添加要过滤的特定安全组
  • 测试:将自己从安全组中删除
  • 等待令牌过期(在我的情况下是1个小时)
  • 您无法再登录

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取和使用适当的signingKey进行Azure移动应用程序身份验证?

来自分类Dev

在使用带oidc和中间件的Azure AD身份验证的Web应用程序中指定自定义redirect_uri

来自分类Dev

Azure移动应用程序和Xamarin表单:在后台使用Facebook进行身份验证

来自分类Dev

是否允许使用client_id进行身份验证的Javascript Instagram应用程序?

来自分类Dev

如何配置要通过控制台应用程序使用YouTube凭据进行身份验证的网站?

来自分类Dev

使用OAuth对EWS应用程序进行身份验证

来自分类Dev

使用 Ionic 应用程序进行 API 身份验证

来自分类Dev

如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

来自分类Dev

使用Azure移动应用程序进行自定义身份验证

来自分类Dev

对单个操作而非整个应用程序使用Windows身份验证进行身份验证

来自分类Dev

使用用户名和密码从WPF应用程序进行GitHub身份验证

来自分类Dev

使用keycloak和openid_client对flutter应用程序进行身份验证

来自分类Dev

如何配置安全性以允许仅使用Node.js中的身份验证访问招摇网址

来自分类Dev

如何在 OWIN 应用程序中使用 cookie 身份验证和 WsFederation 身份验证

来自分类Dev

Twitter:仅应用程序身份验证错误Access-Control-Allow-Origin不允许使用Origin null

来自分类Dev

如何使用密钥对连接的应用程序进行身份验证?Django,Python

来自分类Dev

Github:如何使用SecurID桌面应用程序进行两因素身份验证?

来自分类Dev

如何使用Google Cloud Storage对Java应用程序进行身份验证?

来自分类Dev

如何在Azure逻辑应用程序中使用OAuth 2.0身份验证?

来自分类Dev

使用 Firebase Auth 对其进行身份验证后,如何在最终用户 c# 应用程序中安全地使用 Google Speech API?

来自分类Dev

如何使用 Selenium Webdriver 和 C# 处理 Chrome 应用程序身份验证警报

来自分类Dev

如何使用 Facebook 身份验证和后端服务器实现 Android 应用程序

来自分类Dev

如何在Swift中使用新的Firebase 3.2.1对用户进行身份验证以指定提供程序(Facebook,Google)到我的Firebase应用程序

来自分类Dev

配置Ping Federate和Spring SAML对应用程序进行身份验证

来自分类Dev

在Azure kubernetes服务中运行ASPNET Core 3.1 MVC应用程序,在Azure应用程序网关后面使用identc身份验证并使用Identity Server 4

来自分类Dev

使用Windows身份验证和Web应用程序的IIS与Web应用程序

来自分类Dev

如何使用身份服务器 3 对 2 个不同的 mvc 应用程序进行身份验证

来自分类Dev

Spring Boot和Angular身份验证-如何保护应用程序的安全?

来自分类Dev

使用Node.js Web应用程序中的用户名和密码在Azure AD上进行身份验证

Related 相关文章

  1. 1

    如何获取和使用适当的signingKey进行Azure移动应用程序身份验证?

  2. 2

    在使用带oidc和中间件的Azure AD身份验证的Web应用程序中指定自定义redirect_uri

  3. 3

    Azure移动应用程序和Xamarin表单:在后台使用Facebook进行身份验证

  4. 4

    是否允许使用client_id进行身份验证的Javascript Instagram应用程序?

  5. 5

    如何配置要通过控制台应用程序使用YouTube凭据进行身份验证的网站?

  6. 6

    使用OAuth对EWS应用程序进行身份验证

  7. 7

    使用 Ionic 应用程序进行 API 身份验证

  8. 8

    如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

  9. 9

    使用Azure移动应用程序进行自定义身份验证

  10. 10

    对单个操作而非整个应用程序使用Windows身份验证进行身份验证

  11. 11

    使用用户名和密码从WPF应用程序进行GitHub身份验证

  12. 12

    使用keycloak和openid_client对flutter应用程序进行身份验证

  13. 13

    如何配置安全性以允许仅使用Node.js中的身份验证访问招摇网址

  14. 14

    如何在 OWIN 应用程序中使用 cookie 身份验证和 WsFederation 身份验证

  15. 15

    Twitter:仅应用程序身份验证错误Access-Control-Allow-Origin不允许使用Origin null

  16. 16

    如何使用密钥对连接的应用程序进行身份验证?Django,Python

  17. 17

    Github:如何使用SecurID桌面应用程序进行两因素身份验证?

  18. 18

    如何使用Google Cloud Storage对Java应用程序进行身份验证?

  19. 19

    如何在Azure逻辑应用程序中使用OAuth 2.0身份验证?

  20. 20

    使用 Firebase Auth 对其进行身份验证后,如何在最终用户 c# 应用程序中安全地使用 Google Speech API?

  21. 21

    如何使用 Selenium Webdriver 和 C# 处理 Chrome 应用程序身份验证警报

  22. 22

    如何使用 Facebook 身份验证和后端服务器实现 Android 应用程序

  23. 23

    如何在Swift中使用新的Firebase 3.2.1对用户进行身份验证以指定提供程序(Facebook,Google)到我的Firebase应用程序

  24. 24

    配置Ping Federate和Spring SAML对应用程序进行身份验证

  25. 25

    在Azure kubernetes服务中运行ASPNET Core 3.1 MVC应用程序,在Azure应用程序网关后面使用identc身份验证并使用Identity Server 4

  26. 26

    使用Windows身份验证和Web应用程序的IIS与Web应用程序

  27. 27

    如何使用身份服务器 3 对 2 个不同的 mvc 应用程序进行身份验证

  28. 28

    Spring Boot和Angular身份验证-如何保护应用程序的安全?

  29. 29

    使用Node.js Web应用程序中的用户名和密码在Azure AD上进行身份验证

热门标签

归档