Apereo CAS OAuth2:/callbackAuthorize端点的用途是什么



此观察结果适用于CAS 5.3.9和https://apereo.github.io/cas/5.3.x/installation/OAuth-OpenId-Authentication.html

没有提到/callbackAuthorize端点,但我在实现授权代码流时看到了这一点。以下是请求序列(我们假设用户已经通过CAS认证):

REQ:GEThttps://localhost:8145/api/profile(我的应用程序的受保护端点)

RESP:302,位置:https://cas-server:8443/cas/oauth2.0/authorize?response_type=code&client_id=客户端1&redirect_uri=https%3A%2F%2localhost%3A8145%2Fcallback%3Fstate%3Dcsrf

请求:获取(上面的URL)

RESP:302,位置:https://cas-server:8443/cas/login?service=https%3A%2F%2F172.16.238.10%3A8443%2Fooscas%2Foauth2.0%2FcallbackAuthorize%3Fclient_id%3Dclient1%26redirect_uri%3Dhttps%253A%252F%252Flocalhost%253A8145%252Fcallback%253Fstate%253Dcsrf%26response_type%3Dcode%26client_name%3DCasOAuthClient

请求:获取(上面的URL)

RESP:302,位置:https://cas-server:8443/cas/oauth2.0/callbackAuthorize?client_id=client1&redirect_uri=https%3A%2F%2localhost%3A8145%2Fcallback%3Fstate%3Dcsrf&response_type=代码&client_name=CasOAuthClient&ticket=eyJhbGciOiJIUzUxMiJ9.ZXlKNmFYQWlPaUpFUlVZaUxDSmhiR2NpT2lKa2FYSWlMQ0psYm1NaU9pSkJNVEk0UTBKRExVaFRNalUySW4wLi5RdURKNXBJZ21zOU1LcldqSmwxMk5BLnRXb3FrSEFIRzcyY2M3U3k4cm9fR0VCS05 feThVjREazBYNU81NVNVY3g0EFlby1Kc2R3NGszNUM3X1dDVkwuM01Pd3ci1mVS1QelROWDVIZkJSUQ%3D%3D.b4round6-2s3tO21-Y0xclwVkVEioTLhiyRhi5VotNfjzt5vKoM2Ix9Hy_OW9KSpuGMqWsBOtR9K2B8E6dw&lang=去

请求:获取(上面的URL)

RESP:500,内部服务器错误(cas服务器日志显示SSL握手异常,可能服务器试图访问他在信任库中没有证书的URL)

我的问题:

1) 是否有/oauth2.0/callbackAuthorize端点的文档?

2) 为什么CAS服务器在OAuth2流中发出票证?他应该不出示访问令牌吗?

3) 参数client_name=CasOAuthClient来自哪里?CAS服务器是否试图充当OAuth2客户端?

1)是否有/oauth2.0/callbackAuthorize端点的文档?

是。有关一般设计说明,请参阅此链接,然后了解pac4j的工作原理。

2)为什么CAS服务器在OAuth2流中发出票证?他应该不出示访问令牌吗?

否。授权代码流通过访问令牌端点发布AT。如果您需要来自授权端点的AT,则需要使用不同的授予类型。有关更多信息,请参阅OAUTH规范。

3)参数client_name=CasOAuthClient来自哪里?CAS服务器是否试图充当OAuth2客户端?

从上面的链接,

。。。CAS支持的几乎所有协议都以相同的确切意图运行。给定的CAS部署配备了一个嵌入式"插件",该插件知道如何使用SAML2和CAS、OAuth2和CAS,或OpenID Connect和CAS或其他什么。例如,当您考虑以下具有OAuth2-启用的客户端应用程序的身份验证流时,该等式的右手边总是CAS:

  • CAS部署已启用OAuth2插件
  • OAuth2授权请求被提交到相关的CAS端点
  • OAuth2插件验证请求并将其转换为CAS身份验证请求
  • 身份验证请求被路由到相关的CAS登录端点
  • 用户进行身份验证,CAS将流路由回OAuth2插件,并为该插件颁发了服务票证
  • OAuth2插件尝试验证该票证以检索必要的用户配置文件和属性
  • 然后,OAuth2插件通过将配置文件和经过验证的断言转换为客户端应用程序可能需要的内容来发出正确的OAuth2响应

此外,从该链接中提取:

。。。所有协议都是使用CAS协议与其交互的CAS服务器的客户端。这是在请求/浏览器级别完成的,而不是通过高度定制的网络流在内部进行操作,这样会相互纠缠。CAS中存在的协议模块对CAS身份验证流/引擎的内部工作没有任何假设。他们对待它就像对待外部CAS服务器一样;唯一的区别是,他们直接坐在CAS服务器中,但他们仍然完全不知道这一事实。简单地说,在我们的例子中,SAML2模块基本上说:"这个传入请求需要进行身份验证。所以我将把它路由到CAS服务器进行身份验证,当它返回时,我会尽我的一份力"。

最新更新