0

我正在查看 Box Oauth2.0 视图控制器: https ://github.com/box/box-ios-sdk-v2/blob/master/BoxSDK/OAuth2/BoxAuthorizationViewController.m

他们有以下代码:

- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{

包含这样的代码的目的是什么?

在 webview 中显示 oauth2.0 流时是否有必要?

4

1 回答 1

1

简单地说,这个委托方法反映了 HTTP 1.1,尤其是RFC 2617中指定的“访问认证”方案。

当未经身份验证的客户端发送请求时,服务器通过向客户端发送 401(未经授权)响应消息以及WWW-Authenticate响应中的标头来“挑战”客户端。然后,客户端可以WWW-Authenticate通过提供合适的凭据并重复请求来响应标头中指定的这个特定“挑战”。

客户究竟需要做什么取决于挑战的类型和授权方案,以及客户的要求。URL 加载方案已经实现了默认行为,这在许多情况下就足够了,但是当默认行为不合适时,您可以实现此委托并根据您的特定需求对其进行调整。

IMO,一个 OAuth 客户端库应该实现这个委托。当客户端身份验证失败时,服务器可能会在其响应中发送 HTTP 401(未授权)状态代码,包括WWW-Authenticate指示支持哪些身份验证方案的标头字段。(请参阅第 5.2 节。错误响应 RFC 6749)。

正确实现此委托方法确实是一个高级主题,尤其是因为这会影响安全性。因此,例如,我强烈建议在意外禁用 HTTPs 服务器信任评估之前阅读更多材料。;)

于 2013-11-11T19:53:21.400 回答