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 06:18] – [status] admin | user_guide:chilli:coova_json [2021/02/04 09:07] (current) – [logoff] admin | ||
---|---|---|---|
Line 90: | Line 90: | ||
} | } | ||
</ | </ | ||
- | * So the item that indicates if thre is an active session is the value of **ClientState** | + | * The item that indicates if there is an active session is the value of **ClientState** |
* **0** No active session | * **0** No active session | ||
* **1** Active session | * **1** Active session | ||
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 ==== | ||