functions-authorize icon indicating copy to clipboard operation
functions-authorize copied to clipboard

OpenId connect authorization_code

Open nearlyheadlessarvie opened this issue 1 year ago • 4 comments
trafficstars

This is more of a question than an issue:

Is it possible to complete an openid connect authorization_code flow? I tried it but getting 404 in /signin-oidc.

nearlyheadlessarvie avatar Apr 17 '24 13:04 nearlyheadlessarvie

Hi @nearlyheadlessarvie, If you want to execute authentication flows, I think you will need to create your own Authentication middleware replicating ASPNET Cores one, but using the Azure Functions middleware interface. All ASP.NET interfaces you see in ASPNET middleware should be already registered in your services when you called AddAuthentication(...).AddOpenIdConnect(...) so it should be pretty straight forward.

Can you show your setup?

I think is a great idea to add this functionality to this package.

artmasa avatar Apr 17 '24 18:04 artmasa

Also, something to consider is that in the Isolated model, there are 2 processes, Host and your functions. The host process relays request to your functions process using GRPC. If the function URL does not exist on the host it will never make it to your functions process. You will have to fake the remote authentication URLs (/signin-oidc, etc...) as http triggered functions, even when they will never be hit as the authentication middleware is the one handling those requests.

artmasa avatar Apr 17 '24 21:04 artmasa

@nearlyheadlessarvie, here is a quick implementation for remote authentication using a middleware. I'm looking into dynamically adding support for remote authentication callbacks based on the options and add the related functions methods

artmasa avatar Apr 17 '24 22:04 artmasa

At the moment there's no real need to hook on any events so it's very basic image

Btw, its like the moment you read my question there's this idea you had and executed it real quick... and it worked!

You just forgot the await

var handler = handlers.GetHandlerAsync(httpContext, scheme.Name) as IAuthenticationRequestHandler;

nearlyheadlessarvie avatar Apr 18 '24 01:04 nearlyheadlessarvie