spring-oauth-serverg v3.0.1正式发布,此版本主要增加免密码登录的Passkey功能。
此版本升级更新的主要内容如下:
- 增加Passkeys(WebAuthn) 支持, 实现浏览器无密码登录(使用设备认证)。使用说明详见 others/passkeys-webauthn-user-guide.md。
- MySQL encoding use utf8mb4,支持各类表情符号。
- 优化:添加对 jwks.json 文件必要的安全说明。
spring-oauth-serverg v3.0.1正式发布,此版本主要增加免密码登录的Passkey功能。
此版本升级更新的主要内容如下:
//创建collection
FieldType primaryKey = FieldType.newBuilder()
.withName(ID)
.withPrimaryKey(true)
.withDataType(DataType.VarChar)
.withMaxLength(20)
.withDescription("pk")
.build();
//向量数据
FieldType vectorKey = FieldType.newBuilder()
.withName(VECTOR)
.withDataType(DataType.FloatVector)
.withDimension(this.dbPrivateDimension)
.withDescription("vector")
.build();
//原始数据
FieldType rawKey = FieldType.newBuilder()
.withName(RAW)
.withDataType(DataType.VarChar)
.withMaxLength(2048)
.withDescription("Raw data")
.build();
CollectionSchemaParam schemaParam = CollectionSchemaParam.newBuilder()
.withFieldTypes(Arrays.asList(primaryKey, vectorKey, rawKey))
.withEnableDynamicField(true)
.build();
CreateCollectionParam param = CreateCollectionParam.newBuilder()
.withCollectionName(collectionName)
.withDescription(collectionName + " desc...")
.withSchema(schemaParam)
.withConsistencyLevel(ConsistencyLevelEnum.BOUNDED)
.build();
R<RpcStatus> createStatus =milvusServiceClient.createCollection(param);
使用milvus java sdk 版本:2.3.5。
在spring-oauth-server v3.0.0版本中,我们全部升级了OAuth协议(从OAuth2.0升级到OAuth2.1)并同步增加了对OIDC1.0的支持落地。这些实现的底层依赖SpringSecurity框架的变化,此文将这些细节一一通过对比来讲解。
每一项是一个变化点,依次罗列出之前,之后(v3.0.0)以及说明。
spring-security-oauth2 v2.3.x
spring-security-oauth2-authorization-server v1.1.x
Spring Security官方对旧的不再维护支持而推荐升级替换用新的实现,详见 https://andaily.com/blog/?p=20077
grant_type的变化看到安全在不断升级,同时为更好的支持物联网提供协议上的支撑。具体说明详见 https://andaily.com/blog/?p=103
表设计变化挺大的,主要由于框架的实现重新设计与实现,新的表结构能更好地满足token全生命周期管控(同时带来一定的性能问题,可通过技术手段解决),有更好的配置项扩展能力(通过将各类配置项通过JSON格式数据存储)
authorization_code_time_to_live -设置authorization_code有效时长(默认5分钟)access_token_time_to_live -设置access_token有效时长(默认5分钟)access_token_format -设置access_token的格式,有两选项self-contained(自签即JWT格式,默认) reference(兼容旧的,通过UUID生成随机值)device_code_time_to_live -设置device_code有效时长(默认5分钟)reuse_refresh_token -设置是否复用refresh_token值当刷新token后(默认true复用,设置false时每次刷新后将生成新的refresh_token值)refresh_token_time_to_live -设置refresh_token有效时长(默认60分钟)idtoken_signature_algorithm -设置生成id_token使用的签名算法(默认RS256)新版本与token配置项相关的请查看 TokenSettings.java 类与数据库表oauth2_registered_client 中的字段 token_settings
client_secret_expires_at -client_secret过期时间,可设置client_authentication_methods -认证请求时传递client_secret支持的方式(如post, basic)post_logout_redirect_uris -退出时的重定向到client的uri地址require_proof_key -是否强制使用PKCE(默认false)require_authorization_consent -授权时是否要求用户进行确认(默认false)token_endpoint_authentication_signing_algorithm -指定jwt-bearer流程中生成id_token时使用的签名算法(常见如RS256, ES256)client_name -可以给client设置一个有业务意义的名称新版本与client配置项相关的请查看 ClientSettings.java 类与数据库表 oauth2_registered_client 中的字段 client_settings
java 8
java 17+(openJDK)
从JVM层面做安全升级,同时提升性能与稳定性
/oauth/token -通过认证生成token/oauth/check_token -检查token状态/oauth/error -响应HTML异常信息/oauth2/token -通过认证生成token/userinfo -获取用户信息,OIDC协议中定义/oauth2/revoke -吊销已签发的token/oauth2/introspect -审查token状态(包括是否存活等)/connect/logout -退出并销毁token,浏览器上调用新版本的token全生命周期管控完整性更好,也是协议更新版本的优势所在
通过各明细对比,能更清晰理解与把控各项安全细节。
spring-oauth-client 发布了v2.0.0版本,全面支持OAuth2.1协议的各类grant_type(如 device_code),对应不久前发布的 sping-oauth-server v3.0.0版本功能。
此版本升级更新的主要内容如下:
v2.0.0版本链接:https://gitee.com/mkk/spring-oauth-client/tree/2.0.0/
oauth2-shiro v2.0.0版本正式发布,在距上一次发布7年后,更新了大版本,对安全漏洞等问题进行大升级。
该版本主要更新内容:
v2.0.0版本链接:https://gitee.com/mkk/oauth2-shiro/tree/2.0.0/。
【推荐升级】
可按以下步骤操作,实现在本地运行使用一种可行的OpenAI(ChatGPT)的日常使用。
1.需要有一个github(https://github.com/)的账号并且注册时长在一周以上(若是新注册的先等一周时间吧)。
2.访问 https://github.com/chatanywhere/GPT_API_free,在免费使用部分“点击领取免费API Key”链接。

3.若未登录github则先要进行登录,并进行授权。

4.成功会返回如下图示的一串文本信息,其中的 sk-xxx 就是申请成功的API Key;若有其他情况会展示相关信息(如账号注册未满7天)。请复制并保管好API Key(复制时注意前后不要有空白)。
授权成功
您的免费API Key为: sk-29DzRjpyfGpqFuXXXXXXXXXXXXXX
请妥善保管,不要泄露给他人,如泄漏造成滥用可能会导致Key被封禁
5.下载chatbox程序:访问 https://github.com/Bin-Huang/chatbox 或 https://chatboxai.app/zh 并选择具体的操作系统类型进行下载。

6.安装后打开chatbox,点击“设置” AI进行配置,AI提供方选择 OpenAI API,OpenAI API 密钥填写第4步获取到的API Key,API域名填写 https://api.chatanywhere.com.cn;一个填写示例如下图

记得点击“保存”。
7.在界面左侧选择“Just Chat”;在Prompt输入即可使用了。

8.如何训练AI或创建自己的AI机器人(我的搭档)。
在chatbox的左侧有许多示例(如翻译助手,Travel Guide)都是针对具体场景训练后的AI机器人(比如翻译助手输入Prompt会进行翻译),可作为很好的参考示例来训练属于自己的AI机器人。
点击“我的搭档”可选择增加已经有的AI搭档(如域名生成器),也可创建新的AI搭档–只需要起一个有意义的名称,并进行人物设定(Prompt前缀)即可。

以下对OIDC主要的术语进行说明,并与OAuth2作相关对比。
access_token后,可调用此接口获取EU的详细信息.id_token中获取,主要包括认证信息与授权信息,可根据实际扩展OIDC协议中抽象了一个主要的操作步骤与流程示意图,如下:
下面以AWS提供的OIDC服务来举例说明。 假设你现在有一个应用A想集成使用AWS的OIDC服务,在实现OIDC之前需要先做几件事
OIDC流程在此示例中的关系图如下:
结束。
详细完整的使用请访问 MyOIDC: https://gitee.com/mkk/MyOIDC。
OIDC(OpenID Connect), 下一代的身份认证授权协议; 当前发布版本1.0;
OIDC是基于OAuth2+OpenID整合的新的认证授权协议; OAuth2是一个授权(authorization)的开放协议, 在全世界得到广泛使用, 但在实际使用中,OAuth2只解决了授权问题, 没有实现认证部分,往往需要添加额外的API来实现认证; 而OpenID呢,是一个认证(authentication )的协议, 二者在实际使用过程中都有其局限性;
综合二者,即是OIDC; 通过OIDC,既能有OAUTH2的功能,也有OpenID的功能; 恰到好处…
OIDC将是替换(或升级)OAuth2, OpenID的不二选择..
OIDC在OAuth2的access_token的基础上增加了身份认证信息; 通过公钥私钥配合校验获取身份等其他信息—– 即idToken;
一个使用JWT生成的idToken(base64):
eyJhbGciOiJSUzI1NiIsImtpZCI6IjM3MTc2NjA0OTExODEyNzkwNzgifQ.eyJpc3MiOiIxMTExIiwiYXVkIjoiMTExMSIsImF0X2hhc2giOiI4ZjgxYThjOS1jNWJiLTQwOWMtYjI0Ni1lMzEyZmUwYzM4NWMiLCJyZWdpc3RyYXRpb24iOiIxMjM0NTY3OCIsImV4cCI6MTQ2MzYyMjA4NiwianRpIjoiRnl5aGZOYnQtU0NLR2tpTWRGMVg2dyIsImlhdCI6MTQ2MzU3ODg4NiwibmJmIjoxNDYzNTc4ODI2LCJzdWIiOiJsc3otb2lkYyJ9.hDCcs8PISdwUPp6Eyd-9JCeeTJ2ZtscBeuPITIt43gMYbddiUBLC90uT9bxKe6e3awHels3asEMreFtlnlY09PwdCxXvhjYcEiXO_dnzqu-zQXESHzPEE6d1WsZUcbj6yxoxMh0laba24uu3CbqSRQbOrsYmh2_XA5Q5eP66iOajRUDhNXhmsWEL85jtL9_h0SyfRNPZ9C0mRu2x9YZTHT129O53ggqtjwQxrXLAbCd1dd35DyIztagqQWDpo3gFG7YseNEiQ6Mf2D6nIBU9llAqH4sTThq_ahME06qKENat_sxnmIJN2UHw7u0E08S-59oxtOY9winT78Qj5IfWJw
在OIDC协议的实现中, 其底层是基于OAuth2. 一些常用的库如: JWT(https://jwt.io/), JWS; OAuth2的实现如: Spring Security OAuth, OLTU.
更多信息可参考: http://openid.net/connect/
OIDC 1.0协议: http://openid.net/specs/openid-connect-core-1_0.html
拥抱OIDC…