|
10Duke Enterprise C++ SDK
|
#include <OIDCLoginWithLoopbackRedirection.h>
An implementation of tenduke::sso::OIDCLogin using external browser (the OS default browser) and with "Loopback Interface Redirection" (see https://www.rfc-editor.org/rfc/rfc8252#section-7.3).
In terms of user-experience, this flow is quite obtrusive, but is relatively easy to implement in platform-independent manner. It also has the benefit of not including embedded browser, which might increase the footprint of application noticeably (and embedded browsers are not recommended nowadays, for several reasons).
This flow first starts lightweight local HTTP-server. Then the default OS browser is opened with the URL to start the login. Once the execute succeeds (or fails), the backend sends "redirect"-response to the browser. In this case, the redirect points to an HTTP URL with localhost, e.g. "http://localhost:9999/callback". The browser receives the redirect response and navigates to the URL. The local HTTP server is listening this URL and then notifies the application of the success (or failure). Finally the HTTP-server is shutdown.
Public Member Functions | |
| OIDCLoginWithLoopbackRedirection (const ::tenduke::oauth::OAuthConfiguration &oauthConfiguration, const std::shared_ptr< const ::tenduke::oidc::OIDCConfiguration > &oidcConfiguration, std::string scope, const std::shared_ptr< const ::tenduke::oidc::OIDCClientFactory > &oidcClientFactory, const std::shared_ptr< const ::tenduke::osa::BrowserIntegration > &browser, const std::shared_ptr< const ::tenduke::osa::SocketFactory > &socketFactory, std::string responseMessage, std::uint16_t httpServerPort, const std::shared_ptr< const ::tenduke::net::URLs > &urls, const std::shared_ptr< const ::tenduke::http::server::HTTPRequestParser > &httpRequestParser, const std::map< std::string, std::string > &additionalParameters={}) | |
| Constructs a new instance. | |
| std::unique_ptr< tenduke::oidc::OIDCLoginRequest > | login () const override |
| Starts the login process by creating a login request. | |
| tenduke::oidc::osbrowser::OIDCLoginWithLoopbackRedirection::OIDCLoginWithLoopbackRedirection | ( | const ::tenduke::oauth::OAuthConfiguration & | oauthConfiguration, |
| const std::shared_ptr< const ::tenduke::oidc::OIDCConfiguration > & | oidcConfiguration, | ||
| std::string | scope, | ||
| const std::shared_ptr< const ::tenduke::oidc::OIDCClientFactory > & | oidcClientFactory, | ||
| const std::shared_ptr< const ::tenduke::osa::BrowserIntegration > & | browser, | ||
| const std::shared_ptr< const ::tenduke::osa::SocketFactory > & | socketFactory, | ||
| std::string | responseMessage, | ||
| std::uint16_t | httpServerPort, | ||
| const std::shared_ptr< const ::tenduke::net::URLs > & | urls, | ||
| const std::shared_ptr< const ::tenduke::http::server::HTTPRequestParser > & | httpRequestParser, | ||
| const std::map< std::string, std::string > & | additionalParameters = {} ) |
Constructs a new instance.
| oauthConfiguration | OAuth configuration |
| oidcConfiguration | OIDC configuration |
| scope | OAuth scope |
| oidcClientFactory | factory for creating OIDC clients |
| browser | browser integration |
| socketFactory | factory for creating sockets |
| responseMessage | message to send back to browser |
| httpServerPort | port for HTTP server (0 for random) |
| urls | URL service |
| httpRequestParser | for parsing http requests |
| additionalParameters | additional parameters for the request |
|
overridevirtual |
Starts the login process by creating a login request.
Execute the login request to perform the login.
You can keep the login request to e.g. abort a long-running login.
Implements tenduke::oidc::OIDCLogin.