我正在尝试使用CAS 6.1.4的OAuth2功能,尤其是 authorization_code 授予类型的证明密钥交换(PKCE)变体:我进行了所有设置,并 authorization_code 既可以使用其基本形式,也可以使用PKCE变体。
但是,即使使用PKCE变体,似乎也必须提供 client_secret 请求参数 –我没有找到避免这种情况的方法。这似乎是违反直觉的,因为PKCE是为无法安全保存客户机密的公共客户引入的。 RCF 7636 specs和documentation on the Apereo site对客户端授权是否应认证 authorization_code 请求没有任何意见。
请告诉我我是否错过某件事。
答案 0 :(得分:1)
在这里回答我自己的问题,以防万一有人偶然发现了这个问题。
事实证明,您可以在CAS中定义公共客户端,只需省略相应CAS服务的clientSecret
字段即可。 (有关CAS 6.1.x的OAuth2客户端定义的完整说明,请参见here。)。
公开客户端不需要client_secret
请求参数,并且可以执行 authorization_code 授予类型而无需提供该参数(是否提供PKCE变体)。
这不是写在任何地方的,我是通过很好的反复试验发现的。