Skip to content

Commit 59dde0d

Browse files
Data read write by okta OIDC is not compatible between versions (#313)
* Initial fix of mapping issue * Add comments * Method fix
1 parent c6b9c88 commit 59dde0d

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

Sources/OktaOidc/Common/OktaOidcStateManager.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ open class OktaOidcStateManager: NSObject, NSSecureCoding {
213213
}
214214

215215
let state: OktaOidcStateManager?
216+
prepareKeyedArchiver()
217+
216218
if #available(iOS 11, OSX 10.14, *) {
217219
state = (try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(encodedAuthState)) as? OktaOidcStateManager
218220
} else {
@@ -221,6 +223,22 @@ open class OktaOidcStateManager: NSObject, NSSecureCoding {
221223

222224
return state
223225
}
226+
227+
/// This method can be removed in the future with release 4.0.0 or higher.
228+
/// Resolves OKTA-427089
229+
private static func prepareKeyedArchiver() {
230+
let classes = [OKTAuthorizationRequest.self, OKTAuthorizationResponse.self,
231+
OKTAuthState.self, OKTEndSessionRequest.self,
232+
OKTEndSessionResponse.self, OKTRegistrationRequest.self,
233+
OKTRegistrationResponse.self, OKTServiceConfiguration.self,
234+
OKTServiceDiscovery.self, OKTTokenRequest.self,
235+
OKTTokenResponse.self]
236+
237+
for archivedClass in classes {
238+
let className = "\(archivedClass)".replacingOccurrences(of: "OKT", with: "OID")
239+
NSKeyedUnarchiver.setClass(archivedClass, forClassName: className)
240+
}
241+
}
224242
}
225243

226244
internal extension OktaOidcStateManager {

0 commit comments

Comments
 (0)