-
Notifications
You must be signed in to change notification settings - Fork 152
[iOS SDK] JIT Registration, Business implementation #2583
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[iOS SDK] JIT Registration, Business implementation #2583
Conversation
…SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com>
…SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com>
….com/AzureAD/microsoft-authentication-library-for-objc into spetrescu/jit-network-implementation
| // TODO: This we need to clarify how we handle | ||
| Task { | ||
| let jitController = createJITController() | ||
| let jitIntrospectResponse = await jitController.getJITAuthMethods(continuationToken: continuationToken, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually the name of "onJITRequired" is not accurate. With this name I thought that the caller of this function is notified if "registrationRequired" error is returned. While, in this case we call the "verification/introspect" API here. So, here I see two paths:
- We let the caller decide what to do once "verificationRequired" is called. Most probably it will do something similar you did in line 856 - 870
- We rename the callback to "onJITAuthMethodsSelectionRequired", and we let the JIT controller handle this logic internally. So, the signIn controller delegate to the JIT controller the handling of "registrationRequired" as much as possible and just call the "onJITAuthMethodsSelectionRequired" or "onError".
I prefer approach 2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed the controller response to return the state directly and moved that logic to the jit controller.
Renamed to onJITAuthMethodsSelectionRequired
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to not use withCheckedContinuation except for the MSIDHandler
| func convertToRegisterStrongAuthChallengeError(correlationId: UUID) -> RegisterStrongAuthChallengeError { | ||
| switch self { | ||
| case .redirect: | ||
| return .init(type: .generalError, correlationId: correlationId) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I though we want to convert this to "browser required" error.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be browserRequired, fixed
| func convertToRegisterStrongAuthSubmitChallengeError(correlationId: UUID) -> RegisterStrongAuthSubmitChallengeError { | ||
| switch self { | ||
| case .redirect: | ||
| return .init(type: .generalError, correlationId: correlationId) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be browserRequired, fixed
...responses/validator/jit/validated_response/MSALNativeAuthJITChallengeValidatedResponse.swift
Outdated
Show resolved
Hide resolved
MSAL/src/native_auth/public/state_machine/delegate/JITDelegates.swift
Outdated
Show resolved
Hide resolved
Moved logic to jitcontroller
Combined both signIn functions from the protocol into one
| MSALLogger.logPII( | ||
| level: .error, | ||
| context: context, | ||
| format: "register/challenge: Invalid response with challenge type preverified, response: \(MSALLogMask.maskPII(response))") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: can you mention that "continuation token was expected"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
2286125
into
feature/just-in-time-registration
* Native auth: Just in time SDK mock interface (#2555) * add new state and delegate for JIT * add mock implementation and update for signIn after singUp and SSPR delegates * Add callback also to signIn password delegate * make jit state methods public * use right callback method name * [iOS SDK] JIT Registration, Network implementation (#2576) * Added JIT classes * Jit classes * Controllers * New controllers * Moved controller * Changes for PR * Cleanup * Revert controller changes * Reverted changes on dispatchers * Fixed unit tests * remove non network files * Unit tests * Removed failing tests * PR comments * PR Comments * Swiftlint * Unit tests * Add error validation for invalid verification contact * Update MSAL/src/native_auth/public/state_machine/delegate_dispatcher/SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * Update MSAL/src/native_auth/public/state_machine/delegate_dispatcher/SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * Moved code to KnonwnESTSAPIErrorCodes * Moved to error case * Integration tests * Added comment --------- Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * [iOS SDK] JIT Registration, Business implementation (#2583) * Added JIT classes * Jit classes * Controllers * New controllers * Moved controller * Changes for PR * Cleanup * Revert controller changes * Reverted changes on dispatchers * Fixed unit tests * remove non network files * Unit tests * Removed failing tests * PR comments * PR Comments * Swiftlint * Unit tests * Add error validation for invalid verification contact * Update MSAL/src/native_auth/public/state_machine/delegate_dispatcher/SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * Update MSAL/src/native_auth/public/state_machine/delegate_dispatcher/SignInDelegateDispatchers.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * Moved code to KnonwnESTSAPIErrorCodes * Moved to error case * Controller code * Linked controllers * Fix infinite allocation loop and empty verification contact * New SignIn method * Fix Unit tests * Removed not needed code * Split functions to handlers for responses * Update MSAL/src/native_auth/controllers/jit/MSALNativeAuthJITController.swift Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> * Removed unused parameter * Removed not needed swiftlint * Removed not needed username * Changed general error to browser required * removed not needed config * Renamed jitRequired to jitAuthMethodsSelectionRequired Moved logic to jitcontroller * changed incorrect error * Added preverified path * refactor, remove task inside of task * Finished moving away from the on... parameters Combined both signIn functions from the protocol into one * Removed redirect case from introspect endpoints * Renamed to HandleTokenResult * Integration tests * Added comment * Unit tests * Unit tests * PR Comments --------- Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> Co-authored-by: Danilo Raspa <daniloraspa@microsoft.com> * IC * Removed incorrect unit test host * Removed incorrect extra msal.framework * Swiftlint * Preverified --------- Co-authored-by: Danilo Raspa <105228698+nilo-ms@users.noreply.github.com> Co-authored-by: Danilo Raspa <daniloraspa@microsoft.com>
Proposed changes
Add the business logic along with the dispatching and state creation for JIT
Type of change
Risk
Additional information
Unit tests to follow