Authenticator.html 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>Authenticator Protocol Reference</title>
  5. <link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
  6. <link rel="stylesheet" type="text/css" href="../css/highlight.css" />
  7. <meta charset="utf-8">
  8. <script src="../js/jquery.min.js" defer></script>
  9. <script src="../js/jazzy.js" defer></script>
  10. <script src="../js/lunr.min.js" defer></script>
  11. <script src="../js/typeahead.jquery.js" defer></script>
  12. <script src="../js/jazzy.search.js" defer></script>
  13. </head>
  14. <body>
  15. <a name="//apple_ref/swift/Protocol/Authenticator" class="dashAnchor"></a>
  16. <a title="Authenticator Protocol Reference"></a>
  17. <header class="header">
  18. <p class="header-col header-col--primary">
  19. <a class="header-link" href="../index.html">
  20. Alamofire 5.9.1 Docs
  21. </a>
  22. (96% documented)
  23. </p>
  24. <div class="header-col--secondary">
  25. <form role="search" action="../search.json">
  26. <input type="text" placeholder="Search documentation" data-typeahead>
  27. </form>
  28. </div>
  29. <p class="header-col header-col--secondary">
  30. <a class="header-link" href="https://github.com/Alamofire/Alamofire">
  31. <img class="header-icon" src="../img/gh.png" alt="GitHub"/>
  32. View on GitHub
  33. </a>
  34. </p>
  35. <p class="header-col header-col--secondary">
  36. <a class="header-link" href="dash-feed://https%3A%2F%2Falamofire.github.io%2FAlamofire%2Fdocsets%2FAlamofire.xml">
  37. <img class="header-icon" src="../img/dash.png" alt="Dash"/>
  38. Install in Dash
  39. </a>
  40. </p>
  41. </header>
  42. <p class="breadcrumbs">
  43. <a class="breadcrumb" href="../index.html">Alamofire Reference</a>
  44. <img class="carat" src="../img/carat.png" alt=""/>
  45. Authenticator Protocol Reference
  46. </p>
  47. <div class="content-wrapper">
  48. <nav class="navigation">
  49. <ul class="nav-groups">
  50. <li class="nav-group-name">
  51. <a class="nav-group-name-link" href="../Classes.html">Classes</a>
  52. <ul class="nav-group-tasks">
  53. <li class="nav-group-task">
  54. <a class="nav-group-task-link" href="../Classes/Adapter.html">Adapter</a>
  55. </li>
  56. <li class="nav-group-task">
  57. <a class="nav-group-task-link" href="../Classes/AlamofireNotifications.html">AlamofireNotifications</a>
  58. </li>
  59. <li class="nav-group-task">
  60. <a class="nav-group-task-link" href="../Classes/AuthenticationInterceptor.html">AuthenticationInterceptor</a>
  61. </li>
  62. <li class="nav-group-task">
  63. <a class="nav-group-task-link" href="../Classes/AuthenticationInterceptor/RefreshWindow.html">– RefreshWindow</a>
  64. </li>
  65. <li class="nav-group-task">
  66. <a class="nav-group-task-link" href="../Classes/ClosureEventMonitor.html">ClosureEventMonitor</a>
  67. </li>
  68. <li class="nav-group-task">
  69. <a class="nav-group-task-link" href="../Classes/CompositeEventMonitor.html">CompositeEventMonitor</a>
  70. </li>
  71. <li class="nav-group-task">
  72. <a class="nav-group-task-link" href="../Classes/CompositeTrustEvaluator.html">CompositeTrustEvaluator</a>
  73. </li>
  74. <li class="nav-group-task">
  75. <a class="nav-group-task-link" href="../Classes/ConnectionLostRetryPolicy.html">ConnectionLostRetryPolicy</a>
  76. </li>
  77. <li class="nav-group-task">
  78. <a class="nav-group-task-link" href="../Classes/DataRequest.html">DataRequest</a>
  79. </li>
  80. <li class="nav-group-task">
  81. <a class="nav-group-task-link" href="../Classes/DataResponseSerializer.html">DataResponseSerializer</a>
  82. </li>
  83. <li class="nav-group-task">
  84. <a class="nav-group-task-link" href="../Classes/DataStreamRequest.html">DataStreamRequest</a>
  85. </li>
  86. <li class="nav-group-task">
  87. <a class="nav-group-task-link" href="../Classes/DataStreamRequest/Stream.html">– Stream</a>
  88. </li>
  89. <li class="nav-group-task">
  90. <a class="nav-group-task-link" href="../Classes/DataStreamRequest/Event.html">– Event</a>
  91. </li>
  92. <li class="nav-group-task">
  93. <a class="nav-group-task-link" href="../Classes/DataStreamRequest/Completion.html">– Completion</a>
  94. </li>
  95. <li class="nav-group-task">
  96. <a class="nav-group-task-link" href="../Classes/DataStreamRequest/CancellationToken.html">– CancellationToken</a>
  97. </li>
  98. <li class="nav-group-task">
  99. <a class="nav-group-task-link" href="../Classes/DecodableResponseSerializer.html">DecodableResponseSerializer</a>
  100. </li>
  101. <li class="nav-group-task">
  102. <a class="nav-group-task-link" href="../Classes/DefaultTrustEvaluator.html">DefaultTrustEvaluator</a>
  103. </li>
  104. <li class="nav-group-task">
  105. <a class="nav-group-task-link" href="../Classes/DisabledTrustEvaluator.html">DisabledTrustEvaluator</a>
  106. </li>
  107. <li class="nav-group-task">
  108. <a class="nav-group-task-link" href="../Classes/DownloadRequest.html">DownloadRequest</a>
  109. </li>
  110. <li class="nav-group-task">
  111. <a class="nav-group-task-link" href="../Classes/DownloadRequest/Options.html">– Options</a>
  112. </li>
  113. <li class="nav-group-task">
  114. <a class="nav-group-task-link" href="../Classes/DownloadRequest/Downloadable.html">– Downloadable</a>
  115. </li>
  116. <li class="nav-group-task">
  117. <a class="nav-group-task-link" href="../Classes/Interceptor.html">Interceptor</a>
  118. </li>
  119. <li class="nav-group-task">
  120. <a class="nav-group-task-link" href="../Classes/JSONParameterEncoder.html">JSONParameterEncoder</a>
  121. </li>
  122. <li class="nav-group-task">
  123. <a class="nav-group-task-link" href="../Classes/JSONResponseSerializer.html">JSONResponseSerializer</a>
  124. </li>
  125. <li class="nav-group-task">
  126. <a class="nav-group-task-link" href="../Classes/MultipartFormData.html">MultipartFormData</a>
  127. </li>
  128. <li class="nav-group-task">
  129. <a class="nav-group-task-link" href="../Classes/NetworkReachabilityManager.html">NetworkReachabilityManager</a>
  130. </li>
  131. <li class="nav-group-task">
  132. <a class="nav-group-task-link" href="../Classes/NetworkReachabilityManager/NetworkReachabilityStatus.html">– NetworkReachabilityStatus</a>
  133. </li>
  134. <li class="nav-group-task">
  135. <a class="nav-group-task-link" href="../Classes/PinnedCertificatesTrustEvaluator.html">PinnedCertificatesTrustEvaluator</a>
  136. </li>
  137. <li class="nav-group-task">
  138. <a class="nav-group-task-link" href="../Classes/PublicKeysTrustEvaluator.html">PublicKeysTrustEvaluator</a>
  139. </li>
  140. <li class="nav-group-task">
  141. <a class="nav-group-task-link" href="../Classes/Request.html">Request</a>
  142. </li>
  143. <li class="nav-group-task">
  144. <a class="nav-group-task-link" href="../Classes/Request/State.html">– State</a>
  145. </li>
  146. <li class="nav-group-task">
  147. <a class="nav-group-task-link" href="../Classes/Request/ResponseDisposition.html">– ResponseDisposition</a>
  148. </li>
  149. <li class="nav-group-task">
  150. <a class="nav-group-task-link" href="../Classes/Retrier.html">Retrier</a>
  151. </li>
  152. <li class="nav-group-task">
  153. <a class="nav-group-task-link" href="../Classes/RetryPolicy.html">RetryPolicy</a>
  154. </li>
  155. <li class="nav-group-task">
  156. <a class="nav-group-task-link" href="../Classes/RevocationTrustEvaluator.html">RevocationTrustEvaluator</a>
  157. </li>
  158. <li class="nav-group-task">
  159. <a class="nav-group-task-link" href="../Classes/RevocationTrustEvaluator/Options.html">– Options</a>
  160. </li>
  161. <li class="nav-group-task">
  162. <a class="nav-group-task-link" href="../Classes/ServerTrustManager.html">ServerTrustManager</a>
  163. </li>
  164. <li class="nav-group-task">
  165. <a class="nav-group-task-link" href="../Classes/Session.html">Session</a>
  166. </li>
  167. <li class="nav-group-task">
  168. <a class="nav-group-task-link" href="../Classes/SessionDelegate.html">SessionDelegate</a>
  169. </li>
  170. <li class="nav-group-task">
  171. <a class="nav-group-task-link" href="../Classes/StringResponseSerializer.html">StringResponseSerializer</a>
  172. </li>
  173. <li class="nav-group-task">
  174. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder.html">URLEncodedFormEncoder</a>
  175. </li>
  176. <li class="nav-group-task">
  177. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/ArrayEncoding.html">– ArrayEncoding</a>
  178. </li>
  179. <li class="nav-group-task">
  180. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/BoolEncoding.html">– BoolEncoding</a>
  181. </li>
  182. <li class="nav-group-task">
  183. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/DataEncoding.html">– DataEncoding</a>
  184. </li>
  185. <li class="nav-group-task">
  186. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/DateEncoding.html">– DateEncoding</a>
  187. </li>
  188. <li class="nav-group-task">
  189. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/KeyEncoding.html">– KeyEncoding</a>
  190. </li>
  191. <li class="nav-group-task">
  192. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/KeyPathEncoding.html">– KeyPathEncoding</a>
  193. </li>
  194. <li class="nav-group-task">
  195. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/NilEncoding.html">– NilEncoding</a>
  196. </li>
  197. <li class="nav-group-task">
  198. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/SpaceEncoding.html">– SpaceEncoding</a>
  199. </li>
  200. <li class="nav-group-task">
  201. <a class="nav-group-task-link" href="../Classes/URLEncodedFormEncoder/Error.html">– Error</a>
  202. </li>
  203. <li class="nav-group-task">
  204. <a class="nav-group-task-link" href="../Classes/URLEncodedFormParameterEncoder.html">URLEncodedFormParameterEncoder</a>
  205. </li>
  206. <li class="nav-group-task">
  207. <a class="nav-group-task-link" href="../Classes/URLEncodedFormParameterEncoder/Destination.html">– Destination</a>
  208. </li>
  209. <li class="nav-group-task">
  210. <a class="nav-group-task-link" href="../Classes/UploadRequest.html">UploadRequest</a>
  211. </li>
  212. <li class="nav-group-task">
  213. <a class="nav-group-task-link" href="../Classes/UploadRequest/Uploadable.html">– Uploadable</a>
  214. </li>
  215. </ul>
  216. </li>
  217. <li class="nav-group-name">
  218. <a class="nav-group-name-link" href="../Global%20Variables.html">Global Variables</a>
  219. <ul class="nav-group-tasks">
  220. <li class="nav-group-task">
  221. <a class="nav-group-task-link" href="../Global%20Variables.html#/s:9Alamofire2AFAA7SessionCvp">AF</a>
  222. </li>
  223. </ul>
  224. </li>
  225. <li class="nav-group-name">
  226. <a class="nav-group-name-link" href="../Enums.html">Enumerations</a>
  227. <ul class="nav-group-tasks">
  228. <li class="nav-group-task">
  229. <a class="nav-group-task-link" href="../Enums/AFError.html">AFError</a>
  230. </li>
  231. <li class="nav-group-task">
  232. <a class="nav-group-task-link" href="../Enums/AFError/MultipartEncodingFailureReason.html">– MultipartEncodingFailureReason</a>
  233. </li>
  234. <li class="nav-group-task">
  235. <a class="nav-group-task-link" href="../Enums/AFError/UnexpectedInputStreamLength.html">– UnexpectedInputStreamLength</a>
  236. </li>
  237. <li class="nav-group-task">
  238. <a class="nav-group-task-link" href="../Enums/AFError/ParameterEncodingFailureReason.html">– ParameterEncodingFailureReason</a>
  239. </li>
  240. <li class="nav-group-task">
  241. <a class="nav-group-task-link" href="../Enums/AFError/ParameterEncoderFailureReason.html">– ParameterEncoderFailureReason</a>
  242. </li>
  243. <li class="nav-group-task">
  244. <a class="nav-group-task-link" href="../Enums/AFError/ResponseValidationFailureReason.html">– ResponseValidationFailureReason</a>
  245. </li>
  246. <li class="nav-group-task">
  247. <a class="nav-group-task-link" href="../Enums/AFError/ResponseSerializationFailureReason.html">– ResponseSerializationFailureReason</a>
  248. </li>
  249. <li class="nav-group-task">
  250. <a class="nav-group-task-link" href="../Enums/AFError/ServerTrustFailureReason.html">– ServerTrustFailureReason</a>
  251. </li>
  252. <li class="nav-group-task">
  253. <a class="nav-group-task-link" href="../Enums/AFError/URLRequestValidationFailureReason.html">– URLRequestValidationFailureReason</a>
  254. </li>
  255. <li class="nav-group-task">
  256. <a class="nav-group-task-link" href="../Enums/AFInfo.html">AFInfo</a>
  257. </li>
  258. <li class="nav-group-task">
  259. <a class="nav-group-task-link" href="../Enums/AuthenticationError.html">AuthenticationError</a>
  260. </li>
  261. <li class="nav-group-task">
  262. <a class="nav-group-task-link" href="../Enums/RetryResult.html">RetryResult</a>
  263. </li>
  264. </ul>
  265. </li>
  266. <li class="nav-group-name">
  267. <a class="nav-group-name-link" href="../Extensions.html">Extensions</a>
  268. <ul class="nav-group-tasks">
  269. <li class="nav-group-task">
  270. <a class="nav-group-task-link" href="../Extensions.html#/s:Sa">Array</a>
  271. </li>
  272. <li class="nav-group-task">
  273. <a class="nav-group-task-link" href="../Extensions.html#/c:objc(cs)NSBundle">Bundle</a>
  274. </li>
  275. <li class="nav-group-task">
  276. <a class="nav-group-task-link" href="../Extensions/CharacterSet.html">CharacterSet</a>
  277. </li>
  278. <li class="nav-group-task">
  279. <a class="nav-group-task-link" href="../Extensions/Error.html">Error</a>
  280. </li>
  281. <li class="nav-group-task">
  282. <a class="nav-group-task-link" href="../Extensions/HTTPURLResponse.html">HTTPURLResponse</a>
  283. </li>
  284. <li class="nav-group-task">
  285. <a class="nav-group-task-link" href="../Extensions.html#/s:10Foundation11JSONDecoderC">JSONDecoder</a>
  286. </li>
  287. <li class="nav-group-task">
  288. <a class="nav-group-task-link" href="../Extensions/Notification.html">Notification</a>
  289. </li>
  290. <li class="nav-group-task">
  291. <a class="nav-group-task-link" href="../Extensions.html#/c:@T@OSStatus">OSStatus</a>
  292. </li>
  293. <li class="nav-group-task">
  294. <a class="nav-group-task-link" href="../Extensions.html#/s:10Foundation19PropertyListDecoderC">PropertyListDecoder</a>
  295. </li>
  296. <li class="nav-group-task">
  297. <a class="nav-group-task-link" href="../Extensions.html#/c:@T@SecCertificateRef">SecCertificate</a>
  298. </li>
  299. <li class="nav-group-task">
  300. <a class="nav-group-task-link" href="../Extensions.html#/c:@T@SecPolicyRef">SecPolicy</a>
  301. </li>
  302. <li class="nav-group-task">
  303. <a class="nav-group-task-link" href="../Extensions.html#/c:@T@SecTrustRef">SecTrust</a>
  304. </li>
  305. <li class="nav-group-task">
  306. <a class="nav-group-task-link" href="../Extensions.html#/c:@E@SecTrustResultType">SecTrustResultType</a>
  307. </li>
  308. <li class="nav-group-task">
  309. <a class="nav-group-task-link" href="../Extensions/String.html">String</a>
  310. </li>
  311. <li class="nav-group-task">
  312. <a class="nav-group-task-link" href="../Extensions/URL.html">URL</a>
  313. </li>
  314. <li class="nav-group-task">
  315. <a class="nav-group-task-link" href="../Extensions/URLComponents.html">URLComponents</a>
  316. </li>
  317. <li class="nav-group-task">
  318. <a class="nav-group-task-link" href="../Extensions/URLRequest.html">URLRequest</a>
  319. </li>
  320. <li class="nav-group-task">
  321. <a class="nav-group-task-link" href="../Extensions/URLSessionConfiguration.html">URLSessionConfiguration</a>
  322. </li>
  323. <li class="nav-group-task">
  324. <a class="nav-group-task-link" href="../Extensions/%5BServerTrustEvaluating%5D.html">[ServerTrustEvaluating]</a>
  325. </li>
  326. </ul>
  327. </li>
  328. <li class="nav-group-name">
  329. <a class="nav-group-name-link" href="../Protocols.html">Protocols</a>
  330. <ul class="nav-group-tasks">
  331. <li class="nav-group-task">
  332. <a class="nav-group-task-link" href="../Protocols/AlamofireExtended.html">AlamofireExtended</a>
  333. </li>
  334. <li class="nav-group-task">
  335. <a class="nav-group-task-link" href="../Protocols/AuthenticationCredential.html">AuthenticationCredential</a>
  336. </li>
  337. <li class="nav-group-task">
  338. <a class="nav-group-task-link" href="../Protocols/Authenticator.html">Authenticator</a>
  339. </li>
  340. <li class="nav-group-task">
  341. <a class="nav-group-task-link" href="../Protocols/CachedResponseHandler.html">CachedResponseHandler</a>
  342. </li>
  343. <li class="nav-group-task">
  344. <a class="nav-group-task-link" href="../Protocols/DataDecoder.html">DataDecoder</a>
  345. </li>
  346. <li class="nav-group-task">
  347. <a class="nav-group-task-link" href="../Protocols/DataPreprocessor.html">DataPreprocessor</a>
  348. </li>
  349. <li class="nav-group-task">
  350. <a class="nav-group-task-link" href="../Protocols/DataResponseSerializerProtocol.html">DataResponseSerializerProtocol</a>
  351. </li>
  352. <li class="nav-group-task">
  353. <a class="nav-group-task-link" href="../Protocols/DataStreamSerializer.html">DataStreamSerializer</a>
  354. </li>
  355. <li class="nav-group-task">
  356. <a class="nav-group-task-link" href="../Protocols/DownloadResponseSerializerProtocol.html">DownloadResponseSerializerProtocol</a>
  357. </li>
  358. <li class="nav-group-task">
  359. <a class="nav-group-task-link" href="../Protocols/EmptyResponse.html">EmptyResponse</a>
  360. </li>
  361. <li class="nav-group-task">
  362. <a class="nav-group-task-link" href="../Protocols/EventMonitor.html">EventMonitor</a>
  363. </li>
  364. <li class="nav-group-task">
  365. <a class="nav-group-task-link" href="../Protocols/ParameterEncoder.html">ParameterEncoder</a>
  366. </li>
  367. <li class="nav-group-task">
  368. <a class="nav-group-task-link" href="../Protocols/ParameterEncoding.html">ParameterEncoding</a>
  369. </li>
  370. <li class="nav-group-task">
  371. <a class="nav-group-task-link" href="../Protocols/RedirectHandler.html">RedirectHandler</a>
  372. </li>
  373. <li class="nav-group-task">
  374. <a class="nav-group-task-link" href="../Protocols/RequestAdapter.html">RequestAdapter</a>
  375. </li>
  376. <li class="nav-group-task">
  377. <a class="nav-group-task-link" href="../Protocols/RequestDelegate.html">RequestDelegate</a>
  378. </li>
  379. <li class="nav-group-task">
  380. <a class="nav-group-task-link" href="../Protocols/RequestInterceptor.html">RequestInterceptor</a>
  381. </li>
  382. <li class="nav-group-task">
  383. <a class="nav-group-task-link" href="../Protocols/RequestRetrier.html">RequestRetrier</a>
  384. </li>
  385. <li class="nav-group-task">
  386. <a class="nav-group-task-link" href="../Protocols/ResponseSerializer.html">ResponseSerializer</a>
  387. </li>
  388. <li class="nav-group-task">
  389. <a class="nav-group-task-link" href="../Protocols/ServerTrustEvaluating.html">ServerTrustEvaluating</a>
  390. </li>
  391. <li class="nav-group-task">
  392. <a class="nav-group-task-link" href="../Protocols/URLConvertible.html">URLConvertible</a>
  393. </li>
  394. <li class="nav-group-task">
  395. <a class="nav-group-task-link" href="../Protocols/URLRequestConvertible.html">URLRequestConvertible</a>
  396. </li>
  397. <li class="nav-group-task">
  398. <a class="nav-group-task-link" href="../Protocols.html#/s:9Alamofire17UploadConvertibleP">UploadConvertible</a>
  399. </li>
  400. <li class="nav-group-task">
  401. <a class="nav-group-task-link" href="../Protocols/UploadableConvertible.html">UploadableConvertible</a>
  402. </li>
  403. <li class="nav-group-task">
  404. <a class="nav-group-task-link" href="../Protocols/WebSocketMessageSerializer.html">WebSocketMessageSerializer</a>
  405. </li>
  406. </ul>
  407. </li>
  408. <li class="nav-group-name">
  409. <a class="nav-group-name-link" href="../Structs.html">Structures</a>
  410. <ul class="nav-group-tasks">
  411. <li class="nav-group-task">
  412. <a class="nav-group-task-link" href="../Structs/AlamofireExtension.html">AlamofireExtension</a>
  413. </li>
  414. <li class="nav-group-task">
  415. <a class="nav-group-task-link" href="../Structs/DataResponse.html">DataResponse</a>
  416. </li>
  417. <li class="nav-group-task">
  418. <a class="nav-group-task-link" href="../Structs/DataResponsePublisher.html">DataResponsePublisher</a>
  419. </li>
  420. <li class="nav-group-task">
  421. <a class="nav-group-task-link" href="../Structs/DataStreamPublisher.html">DataStreamPublisher</a>
  422. </li>
  423. <li class="nav-group-task">
  424. <a class="nav-group-task-link" href="../Structs/DataStreamTask.html">DataStreamTask</a>
  425. </li>
  426. <li class="nav-group-task">
  427. <a class="nav-group-task-link" href="../Structs/DataTask.html">DataTask</a>
  428. </li>
  429. <li class="nav-group-task">
  430. <a class="nav-group-task-link" href="../Structs/DecodableStreamSerializer.html">DecodableStreamSerializer</a>
  431. </li>
  432. <li class="nav-group-task">
  433. <a class="nav-group-task-link" href="../Structs/DecodableWebSocketMessageDecoder.html">DecodableWebSocketMessageDecoder</a>
  434. </li>
  435. <li class="nav-group-task">
  436. <a class="nav-group-task-link" href="../Structs/DecodableWebSocketMessageDecoder/Error.html">– Error</a>
  437. </li>
  438. <li class="nav-group-task">
  439. <a class="nav-group-task-link" href="../Structs/DeflateRequestCompressor.html">DeflateRequestCompressor</a>
  440. </li>
  441. <li class="nav-group-task">
  442. <a class="nav-group-task-link" href="../Structs/DeflateRequestCompressor/DuplicateHeaderBehavior.html">– DuplicateHeaderBehavior</a>
  443. </li>
  444. <li class="nav-group-task">
  445. <a class="nav-group-task-link" href="../Structs/DeflateRequestCompressor.html#/s:9Alamofire24DeflateRequestCompressorV20DuplicateHeaderErrorV">– DuplicateHeaderError</a>
  446. </li>
  447. <li class="nav-group-task">
  448. <a class="nav-group-task-link" href="../Structs/DownloadResponse.html">DownloadResponse</a>
  449. </li>
  450. <li class="nav-group-task">
  451. <a class="nav-group-task-link" href="../Structs/DownloadResponsePublisher.html">DownloadResponsePublisher</a>
  452. </li>
  453. <li class="nav-group-task">
  454. <a class="nav-group-task-link" href="../Structs/DownloadTask.html">DownloadTask</a>
  455. </li>
  456. <li class="nav-group-task">
  457. <a class="nav-group-task-link" href="../Structs/Empty.html">Empty</a>
  458. </li>
  459. <li class="nav-group-task">
  460. <a class="nav-group-task-link" href="../Structs/GoogleXSSIPreprocessor.html">GoogleXSSIPreprocessor</a>
  461. </li>
  462. <li class="nav-group-task">
  463. <a class="nav-group-task-link" href="../Structs/HTTPHeader.html">HTTPHeader</a>
  464. </li>
  465. <li class="nav-group-task">
  466. <a class="nav-group-task-link" href="../Structs/HTTPHeaders.html">HTTPHeaders</a>
  467. </li>
  468. <li class="nav-group-task">
  469. <a class="nav-group-task-link" href="../Structs/HTTPMethod.html">HTTPMethod</a>
  470. </li>
  471. <li class="nav-group-task">
  472. <a class="nav-group-task-link" href="../Structs/JSONEncoding.html">JSONEncoding</a>
  473. </li>
  474. <li class="nav-group-task">
  475. <a class="nav-group-task-link" href="../Structs/JSONEncoding/Error.html">– Error</a>
  476. </li>
  477. <li class="nav-group-task">
  478. <a class="nav-group-task-link" href="../Structs/PassthroughPreprocessor.html">PassthroughPreprocessor</a>
  479. </li>
  480. <li class="nav-group-task">
  481. <a class="nav-group-task-link" href="../Structs/PassthroughStreamSerializer.html">PassthroughStreamSerializer</a>
  482. </li>
  483. <li class="nav-group-task">
  484. <a class="nav-group-task-link" href="../Structs/Redirector.html">Redirector</a>
  485. </li>
  486. <li class="nav-group-task">
  487. <a class="nav-group-task-link" href="../Structs/Redirector/Behavior.html">– Behavior</a>
  488. </li>
  489. <li class="nav-group-task">
  490. <a class="nav-group-task-link" href="../Structs/RequestAdapterState.html">RequestAdapterState</a>
  491. </li>
  492. <li class="nav-group-task">
  493. <a class="nav-group-task-link" href="../Structs/ResponseCacher.html">ResponseCacher</a>
  494. </li>
  495. <li class="nav-group-task">
  496. <a class="nav-group-task-link" href="../Structs/ResponseCacher/Behavior.html">– Behavior</a>
  497. </li>
  498. <li class="nav-group-task">
  499. <a class="nav-group-task-link" href="../Structs/StreamOf.html">StreamOf</a>
  500. </li>
  501. <li class="nav-group-task">
  502. <a class="nav-group-task-link" href="../Structs/StreamOf/Iterator.html">– Iterator</a>
  503. </li>
  504. <li class="nav-group-task">
  505. <a class="nav-group-task-link" href="../Structs/StringStreamSerializer.html">StringStreamSerializer</a>
  506. </li>
  507. <li class="nav-group-task">
  508. <a class="nav-group-task-link" href="../Structs/URLEncoding.html">URLEncoding</a>
  509. </li>
  510. <li class="nav-group-task">
  511. <a class="nav-group-task-link" href="../Structs/URLEncoding/Destination.html">– Destination</a>
  512. </li>
  513. <li class="nav-group-task">
  514. <a class="nav-group-task-link" href="../Structs/URLEncoding/ArrayEncoding.html">– ArrayEncoding</a>
  515. </li>
  516. <li class="nav-group-task">
  517. <a class="nav-group-task-link" href="../Structs/URLEncoding/BoolEncoding.html">– BoolEncoding</a>
  518. </li>
  519. <li class="nav-group-task">
  520. <a class="nav-group-task-link" href="../Structs/URLResponseSerializer.html">URLResponseSerializer</a>
  521. </li>
  522. </ul>
  523. </li>
  524. <li class="nav-group-name">
  525. <a class="nav-group-name-link" href="../Typealiases.html">Type Aliases</a>
  526. <ul class="nav-group-tasks">
  527. <li class="nav-group-task">
  528. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire14AFDataResponsea">AFDataResponse</a>
  529. </li>
  530. <li class="nav-group-task">
  531. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire18AFDownloadResponsea">AFDownloadResponse</a>
  532. </li>
  533. <li class="nav-group-task">
  534. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire8AFResulta">AFResult</a>
  535. </li>
  536. <li class="nav-group-task">
  537. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire12AdaptHandlera">AdaptHandler</a>
  538. </li>
  539. <li class="nav-group-task">
  540. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire17DisabledEvaluatora">DisabledEvaluator</a>
  541. </li>
  542. <li class="nav-group-task">
  543. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire10Parametersa">Parameters</a>
  544. </li>
  545. <li class="nav-group-task">
  546. <a class="nav-group-task-link" href="../Typealiases.html#/s:9Alamofire12RetryHandlera">RetryHandler</a>
  547. </li>
  548. </ul>
  549. </li>
  550. </ul>
  551. </nav>
  552. <article class="main-content">
  553. <section class="section">
  554. <div class="section-content top-matter">
  555. <h1>Authenticator</h1>
  556. <div class="declaration">
  557. <div class="language">
  558. <pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">protocol</span> <span class="kt">Authenticator</span> <span class="p">:</span> <span class="kt">AnyObject</span></code></pre>
  559. </div>
  560. </div>
  561. <p>Types adopting the <code>Authenticator</code> protocol can be used to authenticate <code>URLRequest</code>s with an
  562. <code><a href="../Protocols/AuthenticationCredential.html">AuthenticationCredential</a></code> as well as refresh the <code><a href="../Protocols/AuthenticationCredential.html">AuthenticationCredential</a></code> when required.</p>
  563. </div>
  564. </section>
  565. <section class="section">
  566. <div class="section-content">
  567. <div class="task-group">
  568. <ul class="item-container">
  569. <li class="item">
  570. <div>
  571. <code>
  572. <a name="/s:9Alamofire13AuthenticatorP10CredentialQa"></a>
  573. <a name="//apple_ref/swift/Alias/Credential" class="dashAnchor"></a>
  574. <a class="token" href="#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a>
  575. </code>
  576. </div>
  577. <div class="height-container">
  578. <div class="pointer-container"></div>
  579. <section class="section">
  580. <div class="pointer"></div>
  581. <div class="abstract">
  582. <p>The type of credential associated with the <code>Authenticator</code> instance.</p>
  583. </div>
  584. <div class="declaration">
  585. <h4>Declaration</h4>
  586. <div class="language">
  587. <p class="aside-title">Swift</p>
  588. <pre class="highlight swift"><code><span class="kd">associatedtype</span> <span class="kt">Credential</span> <span class="p">:</span> <span class="kt"><a href="../Protocols/AuthenticationCredential.html">AuthenticationCredential</a></span></code></pre>
  589. </div>
  590. </div>
  591. </section>
  592. </div>
  593. </li>
  594. <li class="item">
  595. <div>
  596. <code>
  597. <a name="/s:9Alamofire13AuthenticatorP5apply_2toy10CredentialQz_10Foundation10URLRequestVztF"></a>
  598. <a name="//apple_ref/swift/Method/apply(_:to:)" class="dashAnchor"></a>
  599. <a class="token" href="#/s:9Alamofire13AuthenticatorP5apply_2toy10CredentialQz_10Foundation10URLRequestVztF">apply(_:<wbr>to:<wbr>)</a>
  600. </code>
  601. </div>
  602. <div class="height-container">
  603. <div class="pointer-container"></div>
  604. <section class="section">
  605. <div class="pointer"></div>
  606. <div class="abstract">
  607. <p>Applies the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> to the <code>URLRequest</code>.</p>
  608. <p>In the case of OAuth2, the access token of the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> would be added to the <code>URLRequest</code> as a Bearer
  609. token to the <code>Authorization</code> header.</p>
  610. </div>
  611. <div class="declaration">
  612. <h4>Declaration</h4>
  613. <div class="language">
  614. <p class="aside-title">Swift</p>
  615. <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">apply</span><span class="p">(</span><span class="n">_</span> <span class="nv">credential</span><span class="p">:</span> <span class="kt"><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></span><span class="p">,</span> <span class="n">to</span> <span class="nv">urlRequest</span><span class="p">:</span> <span class="k">inout</span> <span class="kt">URLRequest</span><span class="p">)</span></code></pre>
  616. </div>
  617. </div>
  618. <div>
  619. <h4>Parameters</h4>
  620. <table class="graybox">
  621. <tbody>
  622. <tr>
  623. <td>
  624. <code>
  625. <em>credential</em>
  626. </code>
  627. </td>
  628. <td>
  629. <div>
  630. <p>The <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>.</p>
  631. </div>
  632. </td>
  633. </tr>
  634. <tr>
  635. <td>
  636. <code>
  637. <em>urlRequest</em>
  638. </code>
  639. </td>
  640. <td>
  641. <div>
  642. <p>The <code>URLRequest</code>.</p>
  643. </div>
  644. </td>
  645. </tr>
  646. </tbody>
  647. </table>
  648. </div>
  649. </section>
  650. </div>
  651. </li>
  652. <li class="item">
  653. <div>
  654. <code>
  655. <a name="/s:9Alamofire13AuthenticatorP7refresh_3for10completiony10CredentialQz_AA7SessionCys6ResultOyAHs5Error_pGctF"></a>
  656. <a name="//apple_ref/swift/Method/refresh(_:for:completion:)" class="dashAnchor"></a>
  657. <a class="token" href="#/s:9Alamofire13AuthenticatorP7refresh_3for10completiony10CredentialQz_AA7SessionCys6ResultOyAHs5Error_pGctF">refresh(_:<wbr>for:<wbr>completion:<wbr>)</a>
  658. </code>
  659. </div>
  660. <div class="height-container">
  661. <div class="pointer-container"></div>
  662. <section class="section">
  663. <div class="pointer"></div>
  664. <div class="abstract">
  665. <p>Refreshes the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> and executes the <code>completion</code> closure with the <code>Result</code> once complete.</p>
  666. <p>Refresh can be called in one of two ways. It can be called before the <code><a href="../Classes/Request.html">Request</a></code> is actually executed due to
  667. a <code>requiresRefresh</code> returning <code>true</code> during the adapt portion of the <code><a href="../Classes/Request.html">Request</a></code> creation process. It can also
  668. be triggered by a failed <code><a href="../Classes/Request.html">Request</a></code> where the authentication server denied access due to an expired or
  669. invalidated access token.</p>
  670. <p>In the case of OAuth2, this method would use the refresh token of the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> to generate a new
  671. <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> using the authentication service. Once complete, the <code>completion</code> closure should be called with
  672. the new <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>, or the error that occurred.</p>
  673. <p>In general, if the refresh call fails with certain status codes from the authentication server (commonly a 401),
  674. the refresh token in the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> can no longer be used to generate a valid <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>. In these cases,
  675. you will need to reauthenticate the user with their username / password.</p>
  676. <p>Please note, these are just general examples of common use cases. They are not meant to solve your specific
  677. authentication server challenges. Please work with your authentication server team to ensure your
  678. <code>Authenticator</code> logic matches their expectations.</p>
  679. </div>
  680. <div class="declaration">
  681. <h4>Declaration</h4>
  682. <div class="language">
  683. <p class="aside-title">Swift</p>
  684. <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">refresh</span><span class="p">(</span><span class="n">_</span> <span class="nv">credential</span><span class="p">:</span> <span class="kt"><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></span><span class="p">,</span> <span class="k">for</span> <span class="nv">session</span><span class="p">:</span> <span class="kt"><a href="../Classes/Session.html">Session</a></span><span class="p">,</span> <span class="nv">completion</span><span class="p">:</span> <span class="kd">@escaping</span> <span class="p">(</span><span class="kt">Result</span><span class="o">&lt;</span><span class="kt"><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></span><span class="p">,</span> <span class="kt">Error</span><span class="o">&gt;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Void</span><span class="p">)</span></code></pre>
  685. </div>
  686. </div>
  687. <div>
  688. <h4>Parameters</h4>
  689. <table class="graybox">
  690. <tbody>
  691. <tr>
  692. <td>
  693. <code>
  694. <em>credential</em>
  695. </code>
  696. </td>
  697. <td>
  698. <div>
  699. <p>The <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> to refresh.</p>
  700. </div>
  701. </td>
  702. </tr>
  703. <tr>
  704. <td>
  705. <code>
  706. <em>session</em>
  707. </code>
  708. </td>
  709. <td>
  710. <div>
  711. <p>The <code><a href="../Classes/Session.html">Session</a></code> requiring the refresh.</p>
  712. </div>
  713. </td>
  714. </tr>
  715. <tr>
  716. <td>
  717. <code>
  718. <em>completion</em>
  719. </code>
  720. </td>
  721. <td>
  722. <div>
  723. <p>The closure to be executed once the refresh is complete.</p>
  724. </div>
  725. </td>
  726. </tr>
  727. </tbody>
  728. </table>
  729. </div>
  730. </section>
  731. </div>
  732. </li>
  733. <li class="item">
  734. <div>
  735. <code>
  736. <a name="/s:9Alamofire13AuthenticatorP10didRequest_4with28failDueToAuthenticationErrorSb10Foundation10URLRequestV_So17NSHTTPURLResponseCs0J0_ptF"></a>
  737. <a name="//apple_ref/swift/Method/didRequest(_:with:failDueToAuthenticationError:)" class="dashAnchor"></a>
  738. <a class="token" href="#/s:9Alamofire13AuthenticatorP10didRequest_4with28failDueToAuthenticationErrorSb10Foundation10URLRequestV_So17NSHTTPURLResponseCs0J0_ptF">didRequest(_:<wbr>with:<wbr>failDueToAuthenticationError:<wbr>)</a>
  739. </code>
  740. </div>
  741. <div class="height-container">
  742. <div class="pointer-container"></div>
  743. <section class="section">
  744. <div class="pointer"></div>
  745. <div class="abstract">
  746. <p>Determines whether the <code>URLRequest</code> failed due to an authentication error based on the <code>HTTPURLResponse</code>.</p>
  747. <p>If the authentication server <strong>CANNOT</strong> invalidate credentials after they are issued, then simply return <code>false</code>
  748. for this method. If the authentication server <strong>CAN</strong> invalidate credentials due to security breaches, then you
  749. will need to work with your authentication server team to understand how to identify when this occurs.</p>
  750. <p>In the case of OAuth2, where an authentication server can invalidate credentials, you will need to inspect the
  751. <code>HTTPURLResponse</code> or possibly the <code>Error</code> for when this occurs. This is commonly handled by the authentication
  752. server returning a 401 status code and some additional header to indicate an OAuth2 failure occurred.</p>
  753. <p>It is very important to understand how your authentication server works to be able to implement this correctly.
  754. For example, if your authentication server returns a 401 when an OAuth2 error occurs, and your downstream
  755. service also returns a 401 when you are not authorized to perform that operation, how do you know which layer
  756. of the backend returned you a 401? You do not want to trigger a refresh unless you know your authentication
  757. server is actually the layer rejecting the request. Again, work with your authentication server team to understand
  758. how to identify an OAuth2 401 error vs. a downstream 401 error to avoid endless refresh loops.</p>
  759. </div>
  760. <div class="declaration">
  761. <h4>Declaration</h4>
  762. <div class="language">
  763. <p class="aside-title">Swift</p>
  764. <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">didRequest</span><span class="p">(</span><span class="n">_</span> <span class="nv">urlRequest</span><span class="p">:</span> <span class="kt">URLRequest</span><span class="p">,</span> <span class="n">with</span> <span class="nv">response</span><span class="p">:</span> <span class="kt">HTTPURLResponse</span><span class="p">,</span> <span class="n">failDueToAuthenticationError</span> <span class="nv">error</span><span class="p">:</span> <span class="kt">Error</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
  765. </div>
  766. </div>
  767. <div>
  768. <h4>Parameters</h4>
  769. <table class="graybox">
  770. <tbody>
  771. <tr>
  772. <td>
  773. <code>
  774. <em>urlRequest</em>
  775. </code>
  776. </td>
  777. <td>
  778. <div>
  779. <p>The <code>URLRequest</code>.</p>
  780. </div>
  781. </td>
  782. </tr>
  783. <tr>
  784. <td>
  785. <code>
  786. <em>response</em>
  787. </code>
  788. </td>
  789. <td>
  790. <div>
  791. <p>The <code>HTTPURLResponse</code>.</p>
  792. </div>
  793. </td>
  794. </tr>
  795. <tr>
  796. <td>
  797. <code>
  798. <em>error</em>
  799. </code>
  800. </td>
  801. <td>
  802. <div>
  803. <p>The <code>Error</code>.</p>
  804. </div>
  805. </td>
  806. </tr>
  807. </tbody>
  808. </table>
  809. </div>
  810. <div>
  811. <h4>Return Value</h4>
  812. <p><code>true</code> if the <code>URLRequest</code> failed due to an authentication error, <code>false</code> otherwise.</p>
  813. </div>
  814. </section>
  815. </div>
  816. </li>
  817. <li class="item">
  818. <div>
  819. <code>
  820. <a name="/s:9Alamofire13AuthenticatorP9isRequest_17authenticatedWithSb10Foundation10URLRequestV_10CredentialQztF"></a>
  821. <a name="//apple_ref/swift/Method/isRequest(_:authenticatedWith:)" class="dashAnchor"></a>
  822. <a class="token" href="#/s:9Alamofire13AuthenticatorP9isRequest_17authenticatedWithSb10Foundation10URLRequestV_10CredentialQztF">isRequest(_:<wbr>authenticatedWith:<wbr>)</a>
  823. </code>
  824. </div>
  825. <div class="height-container">
  826. <div class="pointer-container"></div>
  827. <section class="section">
  828. <div class="pointer"></div>
  829. <div class="abstract">
  830. <p>Determines whether the <code>URLRequest</code> is authenticated with the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>.</p>
  831. <p>If the authentication server <strong>CANNOT</strong> invalidate credentials after they are issued, then simply return <code>true</code>
  832. for this method. If the authentication server <strong>CAN</strong> invalidate credentials due to security breaches, then
  833. read on.</p>
  834. <p>When an authentication server can invalidate credentials, it means that you may have a non-expired credential
  835. that appears to be valid, but will be rejected by the authentication server when used. Generally when this
  836. happens, a number of requests are all sent when the application is foregrounded, and all of them will be
  837. rejected by the authentication server in the order they are received. The first failed request will trigger a
  838. refresh internally, which will update the credential, and then retry all the queued requests with the new
  839. credential. However, it is possible that some of the original requests will not return from the authentication
  840. server until the refresh has completed. This is where this method comes in.</p>
  841. <p>When the authentication server rejects a credential, we need to check to make sure we haven&rsquo;t refreshed the
  842. credential while the request was in flight. If it has already refreshed, then we don&rsquo;t need to trigger an
  843. additional refresh. If it hasn&rsquo;t refreshed, then we need to refresh.</p>
  844. <p>Now that it is understood how the result of this method is used in the refresh lifecycle, let&rsquo;s walk through how
  845. to implement it. You should return <code>true</code> in this method if the <code>URLRequest</code> is authenticated in a way that
  846. matches the values in the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>. In the case of OAuth2, this would mean that the Bearer token in the
  847. <code>Authorization</code> header of the <code>URLRequest</code> matches the access token in the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>. If it matches, then we
  848. know the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code> was used to authenticate the <code>URLRequest</code> and should return <code>true</code>. If the Bearer token
  849. did not match the access token, then you should return <code>false</code>.</p>
  850. </div>
  851. <div class="declaration">
  852. <h4>Declaration</h4>
  853. <div class="language">
  854. <p class="aside-title">Swift</p>
  855. <pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">isRequest</span><span class="p">(</span><span class="n">_</span> <span class="nv">urlRequest</span><span class="p">:</span> <span class="kt">URLRequest</span><span class="p">,</span> <span class="n">authenticatedWith</span> <span class="nv">credential</span><span class="p">:</span> <span class="kt"><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">Bool</span></code></pre>
  856. </div>
  857. </div>
  858. <div>
  859. <h4>Parameters</h4>
  860. <table class="graybox">
  861. <tbody>
  862. <tr>
  863. <td>
  864. <code>
  865. <em>urlRequest</em>
  866. </code>
  867. </td>
  868. <td>
  869. <div>
  870. <p>The <code>URLRequest</code>.</p>
  871. </div>
  872. </td>
  873. </tr>
  874. <tr>
  875. <td>
  876. <code>
  877. <em>credential</em>
  878. </code>
  879. </td>
  880. <td>
  881. <div>
  882. <p>The <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>.</p>
  883. </div>
  884. </td>
  885. </tr>
  886. </tbody>
  887. </table>
  888. </div>
  889. <div>
  890. <h4>Return Value</h4>
  891. <p><code>true</code> if the <code>URLRequest</code> is authenticated with the <code><a href="../Protocols/Authenticator.html#/s:9Alamofire13AuthenticatorP10CredentialQa">Credential</a></code>, <code>false</code> otherwise.</p>
  892. </div>
  893. </section>
  894. </div>
  895. </li>
  896. </ul>
  897. </div>
  898. </div>
  899. </section>
  900. </article>
  901. </div>
  902. <section class="footer">
  903. <p>&copy; 2024 <a class="link" href="http://alamofire.org/" target="_blank" rel="external noopener">Alamofire Software Foundation</a>. All rights reserved. (Last updated: 2024-03-30)</p>
  904. <p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.4</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
  905. </section>
  906. </body>
  907. </html>