[Office add-in] Hoe add-in beperken voor eigen gebruik

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 15-09 12:06
Ik ben bezig met het ontwikkelen van een Outlook add-in. Het toevoegen van de add-in in bijvoorbeeld Office 365 webmail is niet meer dan het toevoegen van de url naar het XML manifest bestand.

Echter, iedereen kan dit doen die de url weet. Ook personen buiten de organisatie, of iemand die de organisatie heeft verlaten.

Ik gebruik Single Sign On om te valideren of de gebruiker is ingelogd. Eenmaal ingelogd wordt er enige data via een web-api uit eenCRM-systeem getoond.

Dit werkt dus voor iedereen, als je maar ingelogd bent op Office 365. Dus ook mensen buiten de organisatie. Dit wil ik natuurlijk graag voorkomen, maar dit wil ik liever niet doen met een extra login.

Office geeft een JWT token uit, die heb ik gedecodeerd en bevat enkele velden, waaronder het e-mailadres van de gebruiker. Ik zou daar de domeinnaam van kunnen gebruiken en die als extra validatie kunnen opvoeren. Maar is dat de juiste manier? Valt dat niet te manipuleren?

Pay peanuts get monkeys !

Alle reacties


Acties:
  • 0 Henk 'm!

  • brokenp
  • Registratie: December 2001
  • Laatst online: 06:31
Dit betreft zo te zien de nieuwe JavaScript Office addins (en niet de hele oude legacy addins). Het is als gebruiker mogelijk om de JavaScript aan te passen en daarmee ook wat er precies gebeurt.

Dus: valideren in de browser/JavaScript niet doen, valideren in de API/backen prima

De jwt tokesn van Microsoft zijn volgens mij gesigned, je kan ze valideren , zie bij https://docs.microsoft.co...alidate-an-identity-token

Acties:
  • 0 Henk 'm!

  • Dutch_guy
  • Registratie: September 2001
  • Laatst online: 15-09 12:06
Klopt gaat om de Javascript addins. In eerste instantie probeerde ik bij het laden van de add-in een ajax call te doen en op die manier onzichtbaar te valideren of men ingelogd is, echter ik stuitte helaas op CORS problemen.

Nu laat ik de gebruiker de eerste keer een login link aanklikken, die opent in een popup, doet de validatie, sluit de popup en refreshed de add-in en genereert een sessie op de eigen server.

Dat is op zich prima, de add-in is dan iedere keer zonder in te loggen voor de duur van de sessie te gebruiken.

De vraag is dus hoe ik met deze methode veilig kan valideren of die persoon wel bij de organisatie hoort.

Edit: Wellicht doe ik te moeilijk en moet ik een login maken in de add-in, dan kan men inloggen, valideer ik via de eigen backend en plaats ik een cookie, zodat men niet steeds hoeft in te loggen.

[ Voor 13% gewijzigd door Dutch_guy op 05-06-2020 18:51 ]

Pay peanuts get monkeys !


Acties:
  • 0 Henk 'm!

  • M0nkeymen
  • Registratie: Maart 2009
  • Laatst online: 06:54

M0nkeymen

Monkeystyle!

Dutch_guy schreef op vrijdag 5 juni 2020 @ 18:02:
Klopt gaat om de Javascript addins. In eerste instantie probeerde ik bij het laden van de add-in een ajax call te doen en op die manier onzichtbaar te valideren of men ingelogd is, echter ik stuitte helaas op CORS problemen.

Nu laat ik de gebruiker de eerste keer een login link aanklikken, die opent in een popup, doet de validatie, sluit de popup en refreshed de add-in en genereert een sessie op de eigen server.

Dat is op zich prima, de add-in is dan iedere keer zonder in te loggen voor de duur van de sessie te gebruiken.

De vraag is dus hoe ik met deze methode veilig kan valideren of die persoon wel bij de organisatie hoort.

Edit: Wellicht doe ik te moeilijk en moet ik een login maken in de add-in, dan kan men inloggen, valideer ik via de eigen backend en plaats ik een cookie, zodat men niet steeds hoeft in te loggen.
Volgens mij kun je een accesstoken opvragen, als je deze token doorstuurt naar je backend, kun je een request maken naar graph "on behalf of" de ingelogde gebruiker. Via graph kun je dan allerlei gegevens opvragen. Is dat wat je zoekt?

psn: M0nkeymen81 | Inglourious Guardians