首页 > 其他分享 >O365和Keycloak结合SSO实现

O365和Keycloak结合SSO实现

时间:2024-09-29 16:20:58浏览次数:9  
标签:AzureAD sAMAccountName 映射 ImmutableID SSO O365 NameID Keycloak

背景

内部用keycloak实现SSO,近期引入了Office365,需要接入keycloak(saml协议),实现SSO。

遇到的问题

Office365按照官方文档配置后,负责keycloak的同学帮着调试好后,sso总是提示失败。总是提示找不到用户。

按照官方文档 https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-fed-saml-idp 的说明, NameID和IDPEmail 需要传递,也都传递了。

image.png

负责跟进Case的小姐姐给的结论是NameID传的值是邮箱前缀或者邮箱,不符合O365的要求,要求传的值必须是ImmutableID,这样才能识别为用户存在。 如图示 image.png

KeyCloak 中导入 https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml ,NameID格式只有username、email、transient、persistent4个属性。

image.png

处理方式

经过了解ImmutableID 默认是由AD中ObjectGUID base编码而来。 NameID 对应AD中的sAMAccountName字段。 尝试手动设置AzureAD中的ImmutableID属性值为sAMAccountName。

Install-Module AzureAD
Connect-AzureAD
#查询ImmutableID 
Get-AzureADUser -Filter "Displayname eq 'shizhenning01'" | fl ImmutableID
#设置ImmutableID
Get-AzureADUser -Filter "Displayname eq 'shizhenning01'" | Set-AzureADUser -ImmutableId "shizhenning01"

再尝试登录,SSO顺利通过。

接下来的问题就是修改AADConnect映射规则,让AD中的sAMAccountName自动映射为ImmutableID,AzureAD中对应的属性sourceAnchor。

对映射规则了解的比较少,尝试增加映射规则,优先级调高,始终不能生效。 开了个Case只需在AADConnect安装过程中选中即可,如图示位置:

image.png

这样sAMAccountName字段值会自动同步到AzureAD中用户的ImmutableID值。

标签:AzureAD,sAMAccountName,映射,ImmutableID,SSO,O365,NameID,Keycloak
From: https://blog.51cto.com/magic3/12146086

相关文章

  • Redisson详解
    Redisson是Redis的一个分布式锁实现库,它提供了简单易用的API来处理分布式锁。在处理未获取到锁的线程时,Redisson通过合理的机制来管理等待和超时行为,确保锁的竞争有序并防止资源的长期占用。具体来说,Redisson处理未获取到锁的线程的方式如下:1.等待锁(可配置超时时间)当......
  • 【Spring】扩展点EnvironmentPostProcessor实例详解
    1.概述转载并且补充:SpringBoot扩展点EnvironmentPostProcessor实例详解之前项目中用到了Apollo配置中心,对接Apollo配置中心后,配置中心的属性就可以在程序中使用了,那么这个是怎么实现的呢?配置中心的属性又是何时加载到程序中的呢?那么我们如果找到了这个是怎么实现的是否就......
  • maven annotationProcessorPaths
    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>${maven-compiler-plugin.version}</version><configuration><annotat......
  • python 实现gradient boosting regressor梯度增强回归器算法
    gradientboostingregressor梯度增强回归器算法介绍梯度增强回归器(GradientBoostingRegressor,简称GBR)是一种集成学习算法,专门用于解决回归问题。它通过组合多个弱学习器(通常是决策树)来构建一个强大的预测模型。以下是关于梯度增强回归器算法的详细解释:原理梯度增强回......
  • 远程腾讯云服务器cd : file/: Permisson denied
    这是由于权限问题。一般登录服务器后会自己创建一个新的用户,比如叫leung。adduserleung#创建用户acsusermod-aGsudoleung#给用户acs分配sudo权限如果上面出现不允许,那就加上sudo再执行。但是有时候我们cdleung时也会出现不允许的情况,我们可以直接如下操作:chm......
  • [Redis]Redisson
    waitTime等待时间。客户端尝试获取锁时最大等待时间,超过这个等待时间必然返回获取锁失败。leaseTime锁的租期。客户端可持有锁的时间,超过这个时间锁自动过期。竞争锁的客户端执行Lua脚本获取锁,如果获取失败,则订阅解锁消息,并挂起线程。持有锁的客户端执行Lua脚本解锁,删除锁......
  • .NetCore MySqlException 多线程中(There is already an open DataReader associated w
    问题描述:其实标题只是遇到问题的其中之一,遇到三种异常信息如下:Lockwaittimeoutexceeded;tryrestartingtransaction大概意思:超过锁定等待超时;尝试重新启动事务 ThereisalreadyanopenDataReaderassociatedwiththisConnectionwhichmustbeclosedfirst.大......
  • Redisson与分布式锁
    一.Redis的常用客户端:Jedis:和命令最相似,API全面。缺点:多线程不安全(多线程可以使用连接池,安全使用Jedis)SpringData:线程安全的,底层基于Netty(异步的支持)Redisson:线程安全的,底层基于Netty,提供很多的分布式服务(分布式锁,分布式集合,分布式下的JUC的封装,延时队列)二.Redis实现......
  • keycloak~关于授权码认证中的scope的实践
    前言1.scope参数的作用定义权限:scope用于声明请求访问的资源和权限。常见的值包括openid、profile、email等。影响返回的数据:如果你在授权请求中指定了某些scope,在后续的token请求中,Keycloak会根据这些scope返回相应的信息。openid用于指示请求者希望使用Open......
  • redisson内存泄漏问题排查
    问题描述最近生产有个服务突然出现频繁告警,接口P99响应时间变长,运维同学观察到相应的podcpu飙升,内存占用很高。cpu升高问题排查是老生常谈的话题了,一般可以使用top-ppid-H查看是哪个线程占用cpu高,再结合jstack找到对应的java线程代码。不过经验告诉我们,cpu升高还有另外一个......