我正在看Box Oauth2.0 View Controller: https://github.com/box/box-ios-sdk-v2/blob/master/BoxSDK/OAuth2/BoxAuthorizationViewController.m
他们有以下代码:
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
包含此类代码的目的是什么?
在webview中显示oauth2.0流程时是否需要?
答案 0 :(得分:1)
简单地说,这个委托方法反映了HTTP 1.1中指定的“访问身份验证”方案,尤其是RFC 2617。
当未经身份验证的客户端发送请求时,服务器通过向客户端发送401(未授权)响应消息以及响应中的WWW-Authenticate
标头来“挑战”客户端。然后,客户端可以通过提供合适的凭据并重复请求来回答WWW-Authenticate
标头中指定的特定“挑战”。
客户究竟需要做什么取决于挑战的类型和授权方案以及客户要求。 URL加载方案已经实现了一个默认行为,这在很多情况下是足够的,但是当默认行为不合适时,您可以实现此委托并根据您的特定需求进行定制。
IMO,OAuth客户端库应该实现此委托。当客户端身份验证失败时,服务器可能在其响应中发送HTTP 401(未授权)状态代码,包括WWW-Authenticate
标头字段,指示支持哪些身份验证方案。 (参见§5.2。错误回复 RFC 6749)。
正确实现此委托方法实际上是一个高级主题,尤其是因为这会影响安全性。因此,我强烈建议您在意外禁用HTTPs服务器信任评估之前阅读更多材料。 ;)