Badgerati / Pode

Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
https://badgerati.github.io/Pode
MIT License
830 stars 92 forks source link

Azure AD login example script not working #1326

Open mkht opened 3 months ago

mkht commented 3 months ago

I am trying to use Entra ID (formerly known as Azure AD) to log in to Pode.Web page.

I have referred to the Pode documentation and carefully followed the PKCE instructions to register my app. I specified http://localhost:8090/oauth2/callback as the redirect URL. https://badgerati.github.io/Pode/Tutorials/Authentication/Inbuilt/AzureAD/#pkce

Next, I execute login-azure-ad.ps1 in the Pode.Web example directory. I changed only $clientId and $tenantId values. Nothing else has been changed. https://github.com/Badgerati/Pode.Web/blob/fb774fb73b8c0bafbbe25bf0cc011c52b488016a/examples/login-azure-ad.ps1

Now, when I access the page with a web browser, the Entra ID sign-in screen appears, and after sign in, the 401 error page appears.

Am I doing something wrong?

I'm using

401

ittchmh commented 1 month ago

It looks like you will need to add CORS middleware:

# Add CORS middleware
    Use-PodeMiddleware -Name 'CORS' -ScriptBlock {
        param($context)

        $context.Response.Headers['Access-Control-Allow-Origin'] = '*'
        $context.Response.Headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'
        $context.Response.Headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'

        if ($context.Request.Method -eq 'OPTIONS') {
            $context.Response.StatusCode = 204
            return $true
        }

        return $false
    }