staticwebdev / roles-function

https://docs.microsoft.com/azure/static-web-apps/assign-roles-microsoft-graph
8 stars 11 forks source link

GetRoles not working #13

Open matsunotsuma opened 1 month ago

matsunotsuma commented 1 month ago

Hi, I want to manage users with Entra ID and user roles with DB. So I deployed SWA with custom authentication, but GetRoles Function is not working. Can anyone detect the cause of this problem.

staticwebapp.config.json

{
    "auth": {
        "rolesSource": "/api/GetRoles",
        "identityProviders": {
            "azureActiveDirectory": {
                "registration": {
                    "openIdIssuer": "https://login.microsoftonline.com/-----------",
                    "clientIdSettingName": "AZURE_CLIENT_ID",
                    "clientSecretSettingName": "AZURE_CLIENT_SECRET_APP_SETTING_NAME"
                }
            }
        }
    },
    "navigationFallback": {
        "rewrite": "/index.html"
    },
    "routes": [
        {
            "route": "/client",
            "allowedRoles": ["CLIENT"]
        }
    ],
    "responseOverrides": {
        "401": {
        "statusCode": 302,
        "redirect": "/.auth/login/aad"
        }
    }

}

GetRoles Function (Java)

package com.ms.samples.demo.mscs_az_functions;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import org.springframework.stereotype.Component;

import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;

@Component
public class GetRoles {
    @FunctionName("GetRoles")
    public HttpResponseMessage run(
            @HttpTrigger(
                name = "req",
                methods = {HttpMethod.GET, HttpMethod.POST},
                authLevel = AuthorizationLevel.ANONYMOUS)
                HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");

        //      レスポンスの作成
        Map<String, Object> responseBody = new HashMap<>();

        List<String> roles = new ArrayList<String>();
        roles.add("CLIENT");
        roles.add("ADMINISTRATOR");
        roles.add("GETROLES");
        responseBody.put("roles", roles);
        return request.createResponseBuilder(HttpStatus.OK).body(responseBody).build();
    }
}

local dev log image

/.auth/me image

Best Regard.

JamieMair commented 3 weeks ago

Same problem for me, even the base tutorial does not work.