This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| user_guide:chilli:coova_json [2021/02/04 08:00] – [status] admin | user_guide:chilli:coova_json [2021/02/04 09:07] (current) – [logoff] admin | ||
|---|---|---|---|
| Line 96: | Line 96: | ||
| ==== logon ==== | ==== logon ==== | ||
| + | * The logon process consists of three calls | ||
| + | * Doing a status call to get the latest challenge from the status reply | ||
| + | * Doing a call the the UAM encryption service on the RADIUSdesk back-end by calling the uam.php script. | ||
| + | * Using the returned hash value together with the username to to a call to the JSON login end-point. | ||
| + | |||
| + | === Get the latest challenge === | ||
| + | * Each time we do a call to the **status** end point we get a new challenge in the reply. | ||
| + | * CoovaChilli remembers the last challenge it generated for a client (when they are not logged in) and uses that during the login process. | ||
| + | * This is why its good practice to do a **status** call as step one of the login process to get a fresh challenge from CoovaChilli. (There is an expiry on the challenge which is why we go this route to ensure we have a current value that has not expired yet) | ||
| + | * The call to the status end point was already covered earlier in the document. From it you can see there is a **challenge** item. | ||
| + | |||
| + | === Encrypt the Challenge and Password === | ||
| + | * RADIUSdesk includes a UAM service that takes the challenge, the user's password along with a common uam secret to generate a encrypred value that it uses on the logon end point to authenticate the user. | ||
| + | * Here is a sample call that you can use as reference | ||
| + | * http:// | ||
| + | * And here is the result | ||
| + | <code javascript> | ||
| + | jQuery331012987580313312852_1612418453858( | ||
| + | { | ||
| + | ' | ||
| + | } | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | <WRAP center round tip 90%> | ||
| + | * You will replace **hotspot.radiusdesk.com** with the FQDN or IP Address of your own server | ||
| + | </ | ||
| + | |||
| + | === Call the logon JSON endpoint === | ||
| + | * We can now use the response as the value of **password** when we do the logon JSON call | ||
| + | * http:// | ||
| + | * Alternative format | ||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * And here's the response of a successful logon | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== logoff ==== | ||
| + | * The last JSON end point is **logoff** | ||
| + | * Here is the call and the results | ||
| + | * http:// | ||
| + | * Alternative | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * Repsonse | ||
| + | |||
| + | <code javascript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | * As you can see the reply is pretty much the same than logon but the **clientstate** is now **0** meaning it logged off fine. | ||
| + | |||
| - | ==== llogoff ==== | ||