Oorspronkelijk gepost op 6/11/2014 op de Valence Developer Blog door Sarah-Beth Bianchi.
De Uitdaging
Het authenticatiemodel voor de API's van het Valence Learning Framework vereist dat een gebruiker via een browsersessie inlogt op de Leeromgeving. Dit is een soepele workflow bij het bouwen van een webapplicatie, waardoor de gebruiker snel achter elkaar kan worden doorgestuurd naar het LMS-inlogscherm en vervolgens weer terug naar uw app. Als u echter een native applicatie bouwt die niet in een browser wordt uitgevoerd, kan de workflow onsamenhangend aanvoelen en kan het proces voor het veilig ophalen van de gebruikerstokens lastig zijn. Het is een belangrijk probleem om uw native app een browsersessie te laten starten en de gebruiker vervolgens na authenticatie terug te brengen naar de app.
De oplossing
De Voorbeeld aan clientzijde Hiermee kan een native app een websessie starten, succesvolle gebruikersverificatie bevestigen, de benodigde gebruikerstokens teruggeven aan de app en de browsersessie afsluiten, inclusief het sluiten van het tabblad voor ondersteunde browsers. Wanneer deze code wordt toegevoegd aan uw native app, leidt deze de gebruiker door de contextwisseling die nodig is voor authenticatie om verstoring van de gebruikerservaring te minimaliseren.
De details
Wanneer uw toepassing op een plaats komt waar gebruikersverificatie is vereist, bijvoorbeeld als de app nieuwe inhoud uit een cursus moet halen, wordt het voorbeeld aan de clientzijde geactiveerd. In het voorbeeld wordt een browsersessie geopend om de gebruiker naar het LMS-aanmeldingsscherm te leiden en wordt ook een HTTP-server gestart om te luisteren naar de omleiding die plaatsvindt nadat de verificatie is geslaagd. Zodra de gebruiker zich met succes aanmeldt, ontvangt de HTTP-server de gebruikerstokens en geeft deze door aan uw toepassing. Het voorbeeld verzendt ook een aanroep om het geopende browsertabblad te sluiten. Sommige browsers - zoals Firefox - laten zich niet sluiten via javascript. In dat geval geeft de browser een bericht weer waarin de gebruiker wordt verteld dat het veilig is om het browsertabblad te sluiten. Zodra de gebruiker dit verificatieproces heeft voltooid, keert hij terug naar de app en kan hij verder gaan in een geverifieerde staat.
De steekproef
Het verstrekte voorbeeld is geschreven in C#. Om het in uw omgeving te laten werken, moet u een aantal variabelen configureren.
- Op lijn 66 van Programs.cs, werk de aanwijzer naar het LMS bij. In het voorbeeld is het ingesteld op lms.valence.desire2learn.com wat de voorbeeldserver is die wordt gebruikt door de API-testtool online voorbeeld.
- Op de lijnen 7 en 8 van App.config, werk de waarden appId en appKey bij zodat deze overeenkomen met de waarden voor een app die u registreert. De waarden in het voorbeeld zijn hetzelfde als de waarden in de API-testtool en werken alleen tegen het voorbeeld-LMS dat aan die tool is gekoppeld.
- Op regel 24 van Program.cs heb je de mogelijkheid om de poort die de HTTP-server gebruikt te wijzigen. Aangezien deze HTTP-server op de lokale computer wordt uitgevoerd, hoeft u de waarde niet te wijzigen, tenzij die poort is toegewezen aan een ander proces.
Aan jou de beurt
Probeer dit voorbeeld eens uit in uw eigen client-app en deel uw feedback op de forums. Als u ervoor kiest om dit voorbeeld over te zetten naar een andere taal, overweeg dan om het terug te storten naar de Valence Community, zodat we het kunnen hosten in de Brightspace GitHub-organisatie.