[proofplan]
The proof first records the Banach-space decomposition $A=B\oplus\ker P$ and the metric consequence of contractivity: elements of $B$ are nearest to themselves modulo $\ker P$. The substantive input is Tomiyama's norm-one projection lemma, which says that this metric orthogonality forces $\ker P$ to be invariant under left and right multiplication by unitaries in $B$. This gives the desired one-sided module identities for unitaries, and the [Russo-Dye Theorem][citetheorem:9277] extends them from unitaries to arbitrary elements of $B$ by convex approximation and continuity.
[/proofplan]
[step:Decompose $A$ into the range and kernel of $P$]
Since $P^2=P$ and $\operatorname{Range}(P)=B$, the restriction $P|_B:B\to B$ is the identity map. Indeed, if $b\in B$, then $b=P(a)$ for some $a\in A$, and therefore
\begin{align*}
P(b)=P(P(a))=P(a)=b.
\end{align*}
Define
\begin{align*}
K:=\ker P=\{x\in A:P(x)=0\}.
\end{align*}
For every $a\in A$, set
\begin{align*}
b_a:=P(a)\in B,\qquad k_a:=a-P(a)\in A.
\end{align*}
Then $P(k_a)=P(a)-P(P(a))=0$, so $k_a\in K$, and
\begin{align*}
a=b_a+k_a.
\end{align*}
If $b\in B\cap K$, then $P(b)=b$ because $P|_B=\operatorname{id}_B$, while $P(b)=0$ because $b\in K$; hence $b=0$. Therefore
\begin{align*}
A=B\oplus K
\end{align*}
as a Banach-space direct sum.
For $b\in B$ and $k\in K$, contractivity of $P$ gives
\begin{align*}
\|b\|_A=\|P(b+k)\|_A\leq \|P\|_{\mathcal{L}(A)}\|b+k\|_A=\|b+k\|_A.
\end{align*}
[guided]
The idempotence hypothesis is used here in its strongest form: it makes $P$ an actual projection onto $B$. Because $\operatorname{Range}(P)=B$, every $b\in B$ has the form $b=P(a)$ for some $a\in A$. Applying $P$ again gives
\begin{align*}
P(b)=P(P(a))=P(a)=b,
\end{align*}
so $P$ fixes $B$ pointwise.
Now define
\begin{align*}
K:=\ker P=\{x\in A:P(x)=0\}.
\end{align*}
For an arbitrary element $a\in A$, define
\begin{align*}
b_a:=P(a)\in B,\qquad k_a:=a-P(a)\in A.
\end{align*}
Then
\begin{align*}
P(k_a)=P(a-P(a))=P(a)-P(P(a))=P(a)-P(a)=0,
\end{align*}
so $k_a\in K$. Thus every $a\in A$ has a decomposition
\begin{align*}
a=b_a+k_a
\end{align*}
with $b_a\in B$ and $k_a\in K$.
The decomposition is unique. If $b\in B\cap K$, then $P(b)=b$ because $P$ fixes $B$, while $P(b)=0$ because $b\in K$. Hence $b=0$. Therefore
\begin{align*}
A=B\oplus K
\end{align*}
as a Banach-space direct sum.
Finally, this direct-sum decomposition is not merely algebraic; it also has a metric consequence. If $b\in B$ and $k\in K$, then $P(b+k)=P(b)+P(k)=b$. Since $\|P\|_{\mathcal{L}(A)}=1$, we get
\begin{align*}
\|b\|_A=\|P(b+k)\|_A\leq \|P\|_{\mathcal{L}(A)}\|b+k\|_A=\|b+k\|_A.
\end{align*}
This inequality says that adding a vector from $\ker P$ cannot decrease the norm of an element of $B$.
[/guided]
[/step]
[step:Apply Tomiyama's norm-one projection lemma to unitaries in $B$]
We use Tomiyama's norm-one projection lemma: if $A$ is a unital $C^*$-algebra, $B\subset A$ is a unital $C^*$-subalgebra with the same unit, $A=B\oplus K$ as Banach spaces, and
\begin{align*}
\|b\|_A\leq \|b+k\|_A
\end{align*}
for every $b\in B$ and every $k\in K$, then
\begin{align*}
uK\subseteq K
\end{align*}
and
\begin{align*}
Ku\subseteq K
\end{align*}
for every unitary $u\in B$.
The hypotheses of this lemma have been verified in the previous step with $K=\ker P$. Hence, for every unitary $u\in B$ and every $k\in \ker P$,
\begin{align*}
P(uk)=0
\end{align*}
and
\begin{align*}
P(ku)=0.
\end{align*}
[guided]
The preceding step produced exactly the metric hypothesis required by Tomiyama's norm-one projection lemma. Namely, with $K=\ker P$, we have the Banach-space direct sum $A=B\oplus K$, and for every $b\in B$ and $k\in K$,
\begin{align*}
\|b\|_A\leq \|b+k\|_A.
\end{align*}
Tomiyama's lemma applies because $A$ is a unital $C^*$-algebra, $B$ is a unital $C^*$-subalgebra with the same unit, and the displayed inequality is precisely the required metric orthogonality condition. Its conclusion is that multiplication by any unitary element of $B$ preserves $K$ on both sides:
\begin{align*}
uK\subseteq K
\end{align*}
and
\begin{align*}
Ku\subseteq K.
\end{align*}
Therefore, if $u\in B$ is unitary and $k\in\ker P$, then $uk\in\ker P$ and $ku\in\ker P$. By the definition of $\ker P$, this gives
\begin{align*}
P(uk)=0
\end{align*}
and
\begin{align*}
P(ku)=0.
\end{align*}
[/guided]
[/step]
[step:Prove the one-sided identities for unitaries in $B$]
Let $u\in B$ be unitary, and let $a\in A$. Using the decomposition from the first step, define
\begin{align*}
k:=a-P(a)\in \ker P.
\end{align*}
Then
\begin{align*}
a=P(a)+k.
\end{align*}
Since $uP(a)\in B$ and $uk\in\ker P$ by Tomiyama's norm-one projection lemma,
\begin{align*}
P(ua)=P(uP(a)+uk)=uP(a)+0=uP(a).
\end{align*}
Similarly, since $P(a)u\in B$ and $ku\in\ker P$,
\begin{align*}
P(au)=P(P(a)u+ku)=P(a)u+0=P(a)u.
\end{align*}
Thus the left and right module identities hold for every unitary $u\in B$.
[guided]
Let $u\in B$ be unitary and let $a\in A$. We split $a$ using the direct-sum decomposition from the first step. Define
\begin{align*}
k:=a-P(a)\in \ker P.
\end{align*}
Then
\begin{align*}
a=P(a)+k.
\end{align*}
Since $P(a)\in B$ and $u\in B$, the product $uP(a)$ belongs to $B$. Since $k\in\ker P$, the Tomiyama lemma application from the previous step gives $uk\in\ker P$. Hence $P$ fixes $uP(a)$ and annihilates $uk$, so by linearity,
\begin{align*}
P(ua)=P(uP(a)+uk)=uP(a)+0=uP(a).
\end{align*}
The right-sided identity is obtained by the same decomposition but with multiplication on the right. Since $P(a)u\in B$ and $ku\in\ker P$, linearity of $P$, pointwise fixation of $B$, and annihilation of $\ker P$ give
\begin{align*}
P(au)=P(P(a)u+ku)=P(a)u+0=P(a)u.
\end{align*}
Thus both one-sided module identities hold for every unitary element $u\in B$.
[/guided]
[/step]
[step:Extend the one-sided identities from unitaries to all elements of $B$]
Let $b\in B$ satisfy $\|b\|_A\leq 1$. Since $B$ is a unital $C^*$-algebra, the [Russo-Dye Theorem][citetheorem:9277] applies to $B$ and says that the closed unit ball of $B$ is the closed convex hull of the unitary group of $B$. Therefore there exists a net $(c_i)_{i\in I}$ in $B$ such that each $c_i$ is a finite convex combination of unitaries in $B$ and
\begin{align*}
\lim_{i\in I}\|c_i-b\|_A=0.
\end{align*}
For each index $i\in I$, write
\begin{align*}
c_i=\sum_{j=1}^{n_i}\lambda_{ij}u_{ij}.
\end{align*}
where $n_i\in\mathbb N$, $\lambda_{ij}\geq 0$, $\sum_{j=1}^{n_i}\lambda_{ij}=1$, and each $u_{ij}\in B$ is unitary. By linearity of $P$ and the unitary case proved above,
\begin{align*}
P(c_i a)=\sum_{j=1}^{n_i}\lambda_{ij}P(u_{ij}a)=\sum_{j=1}^{n_i}\lambda_{ij}u_{ij}P(a)=c_iP(a).
\end{align*}
Continuity of multiplication in the $C^*$-norm and boundedness of $P$ give
\begin{align*}
P(ba)=\lim_{i\in I}P(c_i a)=\lim_{i\in I}c_iP(a)=bP(a).
\end{align*}
The same argument, using $P(au)=P(a)u$ for unitaries, gives
\begin{align*}
P(ab)=P(a)b
\end{align*}
for every contraction $b\in B$.
If $b\in B$ is arbitrary and $b\neq 0$, define
\begin{align*}
\widetilde b:=\frac{b}{\|b\|_A}\in B.
\end{align*}
Then $\|\widetilde b\|_A=1$, so the contraction case gives
\begin{align*}
P(ba)=\|b\|_A P(\widetilde b a)=\|b\|_A\widetilde bP(a)=bP(a)
\end{align*}
and
\begin{align*}
P(ab)=\|b\|_A P(a\widetilde b)=\|b\|_AP(a)\widetilde b=P(a)b.
\end{align*}
For $b=0$ both identities follow from linearity. Hence, for every $a\in A$ and every $b\in B$,
\begin{align*}
P(ba)=bP(a).
\end{align*}
Also,
\begin{align*}
P(ab)=P(a)b.
\end{align*}
[guided]
The unitary identities are not yet enough, because the theorem asks for arbitrary elements of $B$. The bridge is the [Russo-Dye Theorem][citetheorem:9277]. Its hypotheses are satisfied because $B$ is a unital $C^*$-algebra. The theorem says that every element of the closed unit ball of $B$ is a norm limit of convex combinations of unitaries in $B$.
Let $b\in B$ be a contraction, meaning $\|b\|_A\leq 1$. By Russo-Dye, there is a net $(c_i)_{i\in I}$ in $B$ such that each $c_i$ is a finite convex combination of unitaries and $c_i\to b$ in norm. For each $i\in I$, write
\begin{align*}
c_i=\sum_{j=1}^{n_i}\lambda_{ij}u_{ij},
\end{align*}
where $n_i\in\mathbb N$, each coefficient $\lambda_{ij}$ is nonnegative, the coefficients sum to $1$, and each $u_{ij}$ is a unitary element of $B$.
The unitary case is stable under finite convex combinations because $P$ is linear. Thus
\begin{align*}
P(c_i a)=P\left(\sum_{j=1}^{n_i}\lambda_{ij}u_{ij}a\right)
=\sum_{j=1}^{n_i}\lambda_{ij}P(u_{ij}a).
\end{align*}
For each unitary $u_{ij}$, the previous step gives $P(u_{ij}a)=u_{ij}P(a)$, so
\begin{align*}
P(c_i a)=\sum_{j=1}^{n_i}\lambda_{ij}u_{ij}P(a)=c_iP(a).
\end{align*}
Now pass to the norm limit. Since $P$ is bounded and multiplication in a $C^*$-algebra is norm-continuous, the convergence $c_i\to b$ implies
\begin{align*}
P(c_i a)\to P(ba)
\end{align*}
and
\begin{align*}
c_iP(a)\to bP(a).
\end{align*}
Taking limits in $P(c_i a)=c_iP(a)$ gives
\begin{align*}
P(ba)=bP(a).
\end{align*}
The same convex approximation argument applied to the right-unitary identity $P(au)=P(a)u$ gives
\begin{align*}
P(ac_i)=P\left(a\sum_{j=1}^{n_i}\lambda_{ij}u_{ij}\right)=\sum_{j=1}^{n_i}\lambda_{ij}P(au_{ij})=\sum_{j=1}^{n_i}\lambda_{ij}P(a)u_{ij}=P(a)c_i.
\end{align*}
Since $P$ is bounded and multiplication in a $C^*$-algebra is norm-continuous, the convergence $c_i\to b$ gives
\begin{align*}
P(ab)=\lim_{i\in I}P(ac_i)=\lim_{i\in I}P(a)c_i=P(a)b.
\end{align*}
Thus the right identity holds for every contraction $b\in B$.
Finally, if $b\in B$ is not a contraction and $b\neq 0$, rescale it by defining
\begin{align*}
\widetilde b:=\frac{b}{\|b\|_A}.
\end{align*}
Then $\widetilde b$ is a contraction in $B$. Applying the contraction case and multiplying back by $\|b\|_A$ gives
\begin{align*}
P(ba)=\|b\|_A P(\widetilde b a)=\|b\|_A\widetilde bP(a)=bP(a)
\end{align*}
and
\begin{align*}
P(ab)=\|b\|_A P(a\widetilde b)=\|b\|_AP(a)\widetilde b=P(a)b.
\end{align*}
If $b=0$, both formulas follow immediately from linearity. Therefore the one-sided module identities hold for every $b\in B$.
[/guided]
[/step]
[step:Combine the one-sided identities to obtain the bimodule formula]
Let $a\in A$ and let $b_1,b_2\in B$. Applying the left module identity to the element $ab_2\in A$ gives
\begin{align*}
P(b_1ab_2)=b_1P(ab_2).
\end{align*}
Applying the right module identity to $a$ and $b_2$ gives
\begin{align*}
P(ab_2)=P(a)b_2.
\end{align*}
Substituting this into the previous identity yields
\begin{align*}
P(b_1ab_2)=b_1P(a)b_2.
\end{align*}
This is the desired bimodule identity for all $a\in A$ and all $b_1,b_2\in B$.
[guided]
Let $a\in A$ and let $b_1,b_2\in B$. The previous step proved two identities valid for every element of $B$: left multiplication can be pulled through $P$, and right multiplication can be pulled through $P$. Apply the left identity first to the element $ab_2\in A$ and the coefficient $b_1\in B$:
\begin{align*}
P(b_1ab_2)=b_1P(ab_2).
\end{align*}
Now apply the right identity to $a\in A$ and $b_2\in B$:
\begin{align*}
P(ab_2)=P(a)b_2.
\end{align*}
Substituting this expression for $P(ab_2)$ into the preceding displayed equality gives
\begin{align*}
P(b_1ab_2)=b_1P(a)b_2.
\end{align*}
This is exactly the bimodule formula asserted in the theorem.
[/guided]
[/step]