【发布时间】:2020-05-19 16:22:55
【问题描述】:
我正在开发一个 SCIM 端点 API,以便在我的 symfony v5 应用程序和 Azure AD 之间自动配置用户。 实际上我没有找到足够的文档来帮助我开发这个,我也不是专家,但我遵循了 docs.microsoft 的一些指导方针。 我首先构建一个 symfony REST API CRUD 而不使用任何包,我所有的端点都由 /Users 开始。
然后我将我的应用程序托管在远程站点 (PLESK) 上,并使用此 url:https://example.com/ 现在我想将我的 SCIM 端点与 Azure AD SCIM 客户端集成。在 Tenant URL 字段中,我输入了这个 URL:https://example.com/scim 但我收到这个错误,如果我做对了,谁能解释我?为什么我会收到这个错误?
您似乎输入了无效的凭据。请确认您是 使用管理帐户的正确信息。错误 代码: SystemForCrossDomainIdentityManagementCredentialValidation 不可用 详细信息:我们收到了您的申请的意外回复: 返回了 HTTP/404 Not Found 响应,而不是预期的响应 HTTP/200 OK 响应。要解决此问题,请确保租户 网址是正确的。租户 URL 通常采用如下格式: https:///scim。如果这不能解决问题,请联系 应用程序开发人员确保他们的 SCIM 端点符合 协议https://www.rfc-editor.org/rfc/rfc7644#section-3.4.2
这是我的 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); }
}
【问题讨论】:
-
根据scim spec,配置必须尝试访问另一个资源以查看您的 api 支持什么。我猜这归结为您的 api 是部分实现。你可以交叉引用 symfony 应用程序日志来查看请求的资源吗?
-
如果你的意思是 symfony 应用程序日志文件,我在再次测试后检查了它,但我没有发现任何东西。但如果你的意思是服务器日志,我还没有访问服务器的权限。跨度>
-
是的,我的意思是应用程序日志文件,即使找不到路由(假设您已配置日志记录),也应该记录请求。您可以使用浏览器访问您的应用程序吗?设置正确吗?
-
您应该小心,该应用程序是在
dev环境中配置的,启用了探查器,任何人都可以访问它。除此之外,还有两件事,1. 访问/Users会导致InternalServerError,2. url 与您在azure 中配置的不同(它缺少/public/部分)。
标签: rest symfony azure-active-directory provisioning scim