Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify boilerplate configuration for web and api applicaitons #197

Open
bdemers opened this issue Feb 1, 2022 · 2 comments
Open

Simplify boilerplate configuration for web and api applicaitons #197

bdemers opened this issue Feb 1, 2022 · 2 comments
Labels
enhancement New feature or request

Comments

@bdemers
Copy link

bdemers commented Feb 1, 2022

Describe the feature request?

The default configuration needed to initialize an API (or web) application can be reduced/simplified for basic use cases.

  • OktaWebApiOptions should allow the caller to set the Issuer instead of requiring both the OktaDomain and the AuthorizationServerId (this could be done backward compatible and not affect existing users).

NOTE: Okta's API quick start guides will be using the Issuer instead of the Okta Domain.

  • Configuration parameters should be parsed from known configuration keys Okta:OktaDomain, Okta:AuthorizationServerId, Okta:Issuer, etç. automatically when possible.

  • Consider adding a util method to configure the AuthenticationOptions as a single line.

For example, the current quick start looks similar to this:

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddOktaWebApi(new OktaWebApiOptions(Configuration)
{
    OktaDomain = Configuration["Okta:OktaDomain"]
});

services.AddAuthorization();

This requires the developer to understand a number of things to configure the framework correctly.

Ideally, we could do something like:

services.AddAuthentication(options =>
{
    Okta.AddAuthentication(options); // some sort of helper method
})
.AddOktaWebApi(new OktaWebApiOptions(Configuration)); // add a `OktaWebApiOptions` constructor to parse the config

services.AddAuthorization();

If possible... we could reduce this even further to something like:

public void ConfigureServices(IServiceCollection services)
{
    Okta.ConfigureApiServices(services, new OktaWebApiOptions(Configuration));
}

This last option may make it too "magical" and more difficult to figure out the touchpoints when a developer needs to configure other authentication/authorization options?

NOTE: Take this all with a grain of salt 🧂, as I'm not sure what the equivalent idiomatic csharp would be.

.NET Version

💯

Provide a documentation link if applicable

No response

Additional Information?

No response

@bdemers bdemers added the enhancement New feature or request label Feb 1, 2022
bdemers added a commit to bdemers/okta-aspnet that referenced this issue Feb 1, 2022
@monde
Copy link

monde commented Feb 1, 2022

Thanks @bdemers

@agilenut
Copy link

I like the idea to support binding to a single Issuer URL in addition to the OktaDomain and AuthorizationServerId. I also like the idea to support a default configuration section name.

As mentioned in the PR, #184 mentions other concerns with configuration which is that, not only does it not support configuration binding, but it does not support configuration reload.

Also, we should be careful about how we implement the default section name. Consumers should be able to use their own section config names if desired and use Configuration.GetSection("MyOktaSectionName") to pass in the okta section. It's fine if you want to use "Okta" as the default but not at the expense of allowing consumers to structure their config as they would like.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants