Skip to content

Upgrading

When upgrading to Laravel 11 from a previous version, if you have applied the Laravel skeleton simplifications, you will need to update the Azure AD callback route when deleting the \App\Http\Middleware\VerifyCsrfToken:

diff --git a/stubs/routes.stub b/stubs/routes.stub
index 34d4712..c65c785 100644
--- a/stubs/routes.stub
+++ b/stubs/routes.stub
@@ -5,6 +5,6 @@ Route::get('auth/logout', [\App\Controllers\Auth\WebSSOController::class, 'logou
Route::group(['prefix' => 'auth/azure-ad'], function () {
Route::get('redirect', [\App\Controllers\Auth\WebSSOController::class, 'oauthRedirect'])->name('login-oauth-redirect');
Route::post('callback', [\App\Controllers\Auth\WebSSOController::class, 'oauthCallback'])->name('login-oauth-callback')
- ->withoutMiddleware([\App\Http\Middleware\VerifyCsrfToken::class]);
+ ->withoutMiddleware([\Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class]);
Route::post('oauth-logout', [\App\Controllers\Auth\WebSSOController::class, 'oauthLogout'])->name('login-oauth-logout');
});

PHP 7.4 & 8.0 support has been dropped.

Some types have been updated. The one that you are likely to run into is DirectorySearch::lookup(...): array|false. If you had provided a type when extending this class, a return type of array|bool will not be compatible.

PHP 7.3 support was dropped due to necessary dependencies dropping support.

There are no changes required.

Support for logging out via Azure AD SSO was added.

There is a new route, which belongs in the group with the other Azure AD routes:

Route::post('oauth-logout', [\App\Controllers\Auth\WebSSOController::class, 'oauthLogout'])->name('login-oauth-logout');

Support for Azure AD SSO was added. This is compatible with the OpenAM/ForgeRock Online Passport SSO, and can be used in tandem.

For information on setting up an Azure AD integration, review the updated webSSO page.

  • The WebSSOController::findUserByNetID() method will now always receive the $netid parameter in lower case. Previously, it was whatever case the API returned.

Support for older versions of PHP has been discontinued. v7 requires PHP 7.4 or higher. You can continue to use an older version of the package if you are using an older version of PHP.

The WEBSSO_STRATEGY=classic option has been removed entirely.

The dependency on Duo’s PHP SDK, along with supporting code for doing Duo authentication in your own app, has been removed. The newer webSSO login flow includes the Duo prompt; your application no longer has to present the widget.

  • If you have ejected the config/duo.php file, you can remove the file.
  • If you have the mfa_route_name route overwritten per the webSSO Changing Routes guide, you can remove the line of code.
  • If you have Route::resource('auth/mfa', 'Auth\DuoController')->only(['index', 'store']); in your routes/web.php file, you can remove the line of code.
  • If you have an Http\Controllers\Auth\DuoController controller, you can remove the file.
  • The Northwestern\SysDev\SOA\Auth\WebSSOAuthentication trait’s findUserByNetID method was previously abstract. It is now defined in the trait, but throws an exception if it is not re-defined in your application.

    This change should not have any practical impact to your application.

    It is necessary for PHP 8 compatability; asking the service container for additional variables beyond the string $netid parameter defined in the method signature would cause the runtime to error out, since PHP 8 now raises a fatal error instead of a warning when an abstract method’s parameters differ.

  • If you have implemented a custom Northwestern\SysDev\SOA\Auth\Strategy\WebSSOStrategy, the login method no longer takes the string $mfa_route_name parameter. The new method signature is as follows:

    public function login(Request $request, string $login_route_name);

v6 changes the default webSSO strategy from the legacy webSSO system to the newer one. This is a breaking change that merits a major version bump, but if you have already switched (and most systems have) then this release can be treated as a minor upgrade.

The USE_NEW_WEBSSO_SERVER environment variable has been removed. If you want to use the older webSSO system, you can configure your system like this:

WEBSSO_STRATEGY=classic
WEBSSO_URL_BASE=https://websso.it.northwestern.edu

Using the new webSSO is unchanged. You should remove the USE_NEW_WEBSSO_SERVER=true environment variable to avoid confusion in the future, but it won’t hurt anything.

If your app has the ejected resources/views/auth/mfa.blade.php file, it can be removed. The new webSSO handles the MFA prompt during its login flow, so this view is no longer used.

v5 is a compatability release for Laravel 7, and drops support for older versions of Laravel. Users on Laravel 5.x & 6 may continue to use v4.

If you do not already have the dependency, the laravel/ui package is now required.

This release adds opt-in support for the new webSSO on OpenAM 11. Code supporting the old webSSO system has been marked as deprecated and will be removed after the project is compelete.

You will need to update the config/nusoa.php with additional options in the sso section. Please review the config file and add the new options.

If you are using the provided webSSO login workflow from php artisan make:sso, you can easily swap between the old and new webSSO systems with the following environment variables:

USE_NEW_WEBSSO_SERVER=true
# If you're not using new SSO, you do not need to set these.
WEBSSO_URL_BASE=https://uat-nusso.it.northwestern.edu
WEBSSO_API_URL_BASE=https://northwestern-test.apigee.net/agentless-websso
WEBSSO_API_KEY=your-apikey-here

This is the recommended upgrade path; it allows you to deploy support in advance and easily migrate back and forth as needed.

The multi-factor authentication step will be handled by the webSSO server. You do not need Duo integration keys after you have moved to the new webSSO. The DUO_ENABLED environment variable still controls whether or not you want multi-factor authentication.

Changes have been made to the underlying WebSSO class. You only need to worry about that if you are using Northwestern\SysDev\SOA\WebSSO directly. The php artisan make:sso login workflow has been updated for you, and you will not need to make any changes to your login/mfa controllers.

  • WebSSO is now an interface. If you are doing new WebSSO, please use dependency injection instead.
  • The getNetID() previously could return a string or false. It now returns a string or null.
  • The getNetID() method has been marked as deprecated. A new getUser() method replaces this, which returns an object that contains the netID & more information.

v3 adds the SSO & Duo drop-in auth controllers. You are not required to use this feature, and any webSSO implementations that depend on v2 of package should continue to work. If you want to take advantage of the new webSSO drop-in auth controllers, instructions are available on the webSSO page.

The eventhub:webhook:configure command now has a --force flag that will skip the delete confirmation for extra webhooks.

  • There is one potential breaking change: the WebSSO class incorrectly depended on config('sso.openAmBaseUrl').

    This has been updated to config('nusoa.sso.openAmBaseUrl').

    If you had a config/sso.php file as a workaround for this bug, you can probably delete it.

The MQ Consumer & Publishers have been replaced by EventHub. This is a radical change, as the underlying messaging service we use has changed.

Please see the EventHub article for usage instructions.