Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The MyTimetable Office 365 integration is able to connect to a user's calendar using the Outlook Calendar REST API. This page describes how to grant MyTimetable access to the Outlook Calendar REST API. MyTimetable will then be able to access calendars without explicit consent of a user.

...

  • Visit the Microsoft Azure Management Portal at portal.azure.comusing the credential of your Microsoft tenant that has the subscription to Office 365 you wish to use.
  • Click "Azure Activity Directory" in the left-hand menu. 
  • In the menu, click "App registrations".
  • Click "New application registration".
  • Enter the Name of the application (e.g. MyTimetable-prod).
  • Select "Web app / API" at "Application type".
  • Enter a URL at "Sign-on URL". Any URL is possible, MyTimetable does not use this value.
  • Click "Create".

Image Modified

Image Modified

Your application is now registered with Azure AD. Proceed with the next step to specify the app permissions.


Step 2: Specifying app permissions

Next, we need to make sure the newly created app has the correct permissions to access user calendars.

Note
The "Read and write calendars in all mailboxes" application permission is described by Microsoft as "Allows the app to create, read, update, and delete events of all calendars without a signed-in user". Less restrictive scopes that allow MyTimetable to perform the operations required are not available at the moment. MyTimetable only reads, updates and deletes calendar events it has created itself, but this is something that is enforced in the synchronisation backend, not by Office 365. So while MyTimetable does not read, update or delete other calendar events, it does have the permissions to do so.
  • In the Azure Management Portal, click the "Settings" button at the app that was created
  • Pick "Required permissions" in the menu that appears
  • Click "Add"

Image Modified

  • Click "Select an API"
  • Pick "Office 365 Exchange Online (Microsoft.Exchange)"
  • Click "Select"
  • Tick the box "Read and write calendars in all mailboxes"
  • Click "Select"
  • Click "Done"


The default permissions for the Windows Azure Active Directory can be removed
  • Click "Windows Azure Active Directory"
  • Click the "Delete" button and confirm using "Yes"

Image Modified


Finally, we need to consent to the apps permissions on behalf of all users in the tenant, so users do not have to manually consent.

...

In order to enable service-to-service calls, a X.509 certificate needs to be configured and uploaded to Azure. 
  • If you are using MyTimetable managed hosting, Eveoh will provide you with a certificate to upload. If you are an on-premises customer you will need to create this certificate yourself by following:
    • We need to create a self-signed certificate. This can be done using the minimal openssl install found at https://files.eveoh.nl/openssl_min.zip (for Windows) or an OpenSSL install included in the OS (Linux). From the command line, create a self-signed certificate and enter a password (make sure to remember this), the university name, country and domain name of your MyTimetable instance (common name):
Code Block
languagebash
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -config openssl.cnf
  • Back in the Azure Management Portal, click the "Settings" button at the app that was created
  • Pick "Keys" in the menu that appears
  • Click "Upload Public Key"
  • Upload the "cert.pem" file from Eveoh or generated in the first step
  • Click "Save"
  • The key should now be visible under "Public Keys"

Anchor
information-required
information-required
Information required for MyTimetable configuration

...

MyTimetable requires the generated X.509 certificate and the corresponding private key to be available in a Java Keystore format. The Eveoh support department can convert store the generated X.509 certificate and its private key into a Java Keystore for you. If you want to do it yourself, please follow these steps:

  • Convert Save the X.509 certificate and the private key into the PKCS12 format using OpenSSL:
Code Block
languagebash
openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx

...