He aquí una interesante propiedad de los operadores de diagonalización $$\eqalign{ {\rm diag}(Z\,{\rm Diag}(y)\,W) = (W^T\circ Z)\,y \cr }$$ donde $\circ$ es el producto elemental/Hadamard, ${\rm Diag}(v)$ es una función que crea una matriz diagonal a partir de su argumento vectorial, y ${\rm diag}(M)$ crea un vector columna a partir de la diagonal de su argumento matriz.
Aplicando esto a tu ecuación puedes resolver $B={\rm Diag}(b)$ directamente $$\eqalign{ {\rm diag}(A\,{\rm Diag}(b)\,A^T) &= {\rm diag}(X) \cr (A\circ A)\,b &= {\rm diag}(X) \cr b &= (A\circ A)^+\,{\rm diag}(X) \cr B &= {\rm Diag}\Big((A\circ A)^+\,{\rm diag}(X)\Big) \cr }$$ donde $M^+$ es la inversa de Moore-Penrose de $M$ .
Actualización
La diagonalización de $X$ desecha parte de la información, así que aquí hay otra relación que utiliza la vectorización, y por lo tanto preserva toda esa información. $$\eqalign{ {\rm vec}(Z\,{\rm Diag}(y)\,W) = (W^T\otimes u)\circ(v\otimes Z)\,y \cr }$$ los vectores $(u,v)$ son vectores cuyos componentes son todos iguales a la unidad; las dimensiones son tales que los productos $Z^Tu$ y $Wv$ se definen; y $\otimes$ es el producto de Kronecker.
La referencia para esta operación se puede encontrar en: J Brewer, Kronecker products and matrix calculus in system theory, IEEE Transactions on circuits and systems, 1978. Enlace al pdf del artículo de uta.edu
Allí la operación se definió en términos del producto de Khatri-Rao, que da como resultado $(W^T\otimes u)\circ(v\otimes Z)$ .
Una vez más se puede utilizar esto para resolver $B$ $$\eqalign{ {\rm vec}(A\,{\rm Diag}(b)\,A^T) &= {\rm vec}(X) \cr (A\otimes u)\circ(u\otimes A)\,b &= {\rm vec}(X) \cr b &= \big((A\otimes u)\circ(u\otimes A)\big)^+\,{\rm vec}(X) \cr B &= {\rm Diag}\Big(\big((A\otimes u)\circ(u\otimes A)\big)^+\,{\rm vec}(X)\Big) \cr }$$ nota que $v=u$ para este problema y las dimensiones de $u$ son tales que $A^Tu$ se define.