In recent years, mobile number has become an important factor for authentication and hence more and more enterprises employ methods to capture their users' mobile numbers using SMS.
In a typical scenario;
- the GUI which user is interacting with (whether it is a web site or an app) asks user to enter her/his mobile number
- then server generates a token and
- sends that token to the provided mobile number
- then user must switch to a new GUI for instance, if the original GUI is a web site, user must switch to her/his mobile device's to find the received message in SMS inbox. it is the same if user was originally in an app. in that case user must switch to SMS manager app on her/his Smartphone
- the user then, must copy or memorize the received token to
- then user must switch back to the original GUI and
- enter the copied or memorized token into the originating web site or app and
- hit a key (for example) and
- wait for the server to process the entered token
- at the end, server validates entered token and if it is correct then authorizes that mobile number and may set it as an authentication mean for the user and
- finally the result is displayed on the GUI
this is a typical scenario which most of well known IT companies (such as Google, Facebook and others) use to authorize their users.
now assume another scenario,
- the GUI which user is interacting with (whether it is a web site or an app) asks user to enter her/his mobile number
- then server generates a token and
- shows that token to the user in the same GUI and asks the user to send it to a specified number (Server Messaging Centre Number = SMCN) using the mobile number that is entered by user.
- the user may have to copy or memorize the displayed token,
- then user must switch to a new GUI, for instance, if the original GUI is a web site, user must switch to her/his mobile device to type the token and send it to SMCN. it is the same if user was originally in an app. in that case user must switch to SMS manager app on her/his Smartphone to send the token. however in this case, app may employ smart device's programming API to call SMS Launcher and pre-fills the address and content of the message on behalf of the user.
- the user just sends the message to SMCN,
- then user must switch back to the original GUI and
- hit a key to declare that the token has been sent to the server and
- wait for the server to process the entered token
- at the end, server validates entered token and if it is correct then authorizes that mobile number and may set it as an authentication mean for the user and
- finally the result is displayed on the GUI
now the question is, which method is better in terms of security and other factors if there is any?
EDITED:
I have updated the question based on @Andre edit and answer for better understanding,
first, both methods may use in authentication as well as authorization. assume the case that someone have logged into her/his Internet Banking account and wants to transfer money, here the mentioned methods may use to authorize user and grant her to transfer money or not.
second, let's focus on comparing these two methods and not talking about downside of using SMS in authN and authZ process.
Third, comparing two alternatives, (as I said before) in both cases users have to memorize or copy something then leave one environment for another and type or paste it. So, it sounds like, in terms of usability both methods are the same; as in method one, user have to type something received in SMS into the original GUI and in method two, user have to type something seen in original GUI into SMS send|receive GUI. Therefore in both cases, user may make something wrong.