Rest 使用Azure Active Directory和Symfony进行SCIM端点和用户配置

Rest 使用Azure Active Directory和Symfony进行SCIM端点和用户配置,rest,symfony,azure-active-directory,provisioning,scim,Rest,Symfony,Azure Active Directory,Provisioning,Scim,我正在开发一个SCIM端点API,以支持在我的symfony v5应用程序和Azure AD之间自动配置用户。 事实上,我没有找到足够的文档来帮助我开发它,而且我不是专家,但我遵循了docs.microsoft的一些指导原则。 我首先构建一个symfony REST API CRUD,而不使用任何捆绑包,我的所有端点都由/Users开始 然后,我在远程站点PLESK上托管了我的应用程序,并使用以下url: 现在我想将我的SCIM端点与Azure AD SCIM客户端集成。在租户URL字段中,我放

我正在开发一个SCIM端点API,以支持在我的symfony v5应用程序和Azure AD之间自动配置用户。 事实上,我没有找到足够的文档来帮助我开发它,而且我不是专家,但我遵循了docs.microsoft的一些指导原则。 我首先构建一个symfony REST API CRUD,而不使用任何捆绑包,我的所有端点都由/Users开始

然后,我在远程站点PLESK上托管了我的应用程序,并使用以下url: 现在我想将我的SCIM端点与Azure AD SCIM客户端集成。在租户URL字段中,我放置了以下URL: 但是我收到了这个错误,谁能解释一下我做的是对的吗?为什么我会收到这个错误

您似乎输入了无效的凭据。请确认您是 为管理帐户使用正确的信息。错误 代码: SystemForCrossDomainIdentityManagementCredentialValidation不可用 详细信息:我们从您的应用程序收到此意外响应: 返回了HTTP/404 Not Found响应,而不是预期的响应 HTTP/200OK响应。要解决此问题,请确保承租人 URL是正确的。租户URL的格式通常如下所示: https:///scim. 如果这不能解决问题,请联系 应用程序开发人员确保其SCIM端点符合 协议

这是我的API控制器类示例创建用户:

class APIController extends AbstractController
{

//Create User
    /**
     * @Route("/Users", name="ajout", methods={"POST"})
     */
    public  function addUser(Request $request){
        //On verifie si on a une requette
// On vérifie si la requête est une requête Ajax
        //if($request->isXmlHttpRequest()) {
        // On instancie un nouvel article
        $user = new User();

        // On décode les données envoyées
        $donnees = json_decode($request->getContent());

        // On hydrate l'objet
        $user->setEmail($donnees->email);
        $user->setRoles($donnees->roles);

        // On sauvegarde en base
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($user);
        $entityManager->flush();

        // On retourne la confirmation
        return new Response('ok', 201);
    }
    //return new Response('Failed', 404); }
} 
网址https://example.com/scim 将不起作用,因为您在@Route annotations中没有定义前缀scim,只有用户。网址https://example.com 而且 Azure可能需要check-GET方法——因为在SCIM文档中只有这样的方法返回200个响应代码

首先-指定SCIM中定义的所有所需路由

其次,根据文档手动使用邮递员和测试路线,或者更好地为其编写e2e测试

下一步-确保你真正的工作URL是什么

最后-在Azure测试工具中测试集成

PS.为什么API平台不基于Symfony 5?你会让一切变得更快

PS2。您可以观看一些现成的Microsoft SCIM for C参考代码,但仍然值得一读——尤其是自述文件。
另外,关于测试的wiki页面非常棒,您应该查看它,Azure广告我们希望得到这样的响应。这将允许您验证creds

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
    "totalResults": 0,
    "Resources": [],
    "startIndex": 1,
    "itemsPerPage": 20
}

根据,配置必须尝试访问其他资源以查看api支持的内容。我猜这可以归结为您的api是一个部分实现。你能交叉引用symfony应用程序日志以查看请求的资源吗?如果你是指symfony应用程序日志文件,我在再次测试后检查了它,但没有发现任何内容。但是如果你是指服务器日志,我还没有访问服务器的权限。是的,我是指应用程序日志文件,如果您配置了日志记录,则即使未找到路由,也应该记录请求。你能用浏览器访问你的应用程序吗?它是否正确设置?您应该小心,该应用程序是在启用了探查器的开发环境中配置的,任何人都可以访问它。除此之外,还有两件事。访问/Users会导致InternalServerError,2。该url与您在azure中配置的url不同,它缺少/public/part。