Verifying a given cohomology class is the Stiefel-Whitney class We know that Stiefel-Whitney class can be determined uniquely using the axioms, thus if we are given an cohomology class assigned to each real vector bundle, we shall be able to use the axioms to verify if this class agrees with the Stiefel-Whiney class.
An example is to see that the spin structure exists iff $w_2(TM)=0$. We can form such an obstruction $a \in H^2(M,\mathbb{Z}_2)$ using fiberation, i.e. spin structure exists iff $a=0$. To see that this $a$ is exactly $w_2$, according to p81 of this book, we need
to verify the following:

Here is what I don't understand. According to the axioms, the rank axiom is naturally satisfied. The normaization axiom seem to be unrelated to this one. Then we need to verify the naturality axiom, which is given in the above criterion. But for the Whitney product axiom, I didn't see how the criterion above implies this one.
Any help is appreciated.
 A: You are confusing two things. I will try to explain the two points clearly and then afterwards explain your confusion.
Suppose $\alpha$ is a way of assigning a cohomology class to each rank $n$ oriented vector bundle $\alpha(E) \in H^k(M;\Bbb Z_2)$ which is the same for any two isomorphic bundles and natural under pullback: $\alpha(f^*E) = f^* \alpha(E)$.

Thm: there is a cohomology class $\beta \in H^k(BSO_n; \Bbb Z_2)$ so that, for the classifying map $f_E: X \to BSO_n$ with $f_E^*(\tau_n) \cong E$ we have $\alpha(E) = f_E^* \beta$.

Proof: set $\beta = \alpha(\tau_n)$. Then naturality shows that $$\alpha(E) = \alpha(f_E^* \tau_n) = f_E^* \alpha(\tau_n) = f_E^* \beta.$$
So this just amounts to the fact that $BSO_n$ classifies rank $n$ oriented vector bundles. Characteristic classes of oriented rank $n$ vector bundles are cohomology classes of $BSO_n$.
Now it is a calculation that $H^2(BSO_n; \Bbb Z_2) = \Bbb Z_2$. One of these elements is zero, the other is $w_2$. If you have a characteristic class of rank $n$ oriented vector bundles, either it is zero, or it is the nonzero class --- which is hence $w_2$.
It thus suffices to show that your characteristic class $a(E)$ is nonvanishing in some example.

What you are confused about is more general. The above explains why characteristic classes of vector bundles (let's drop the rank and orientation condition and say characteristic classes of vector bundles up to stabilization) come from the cohomology of $BO$.
The axioms you are thinking of help us to pin down specific classes in the cohomology of $BO$.
It can be phrased in the following funny way. The cohomology $$R = H^*(BO;\Bbb Z_2)$$ is a ring under cup product. The Big Theorem is that $R$ is a polynomial algebra on some specific elements that we like to call $w_1, w_2, \cdots$. But what is special about these elements? $R$ is also a polynomial algebra on the elements $w_1, w_2 + w_1^2, w_3 + w_1^3, \cdots$
The point is that $R$ is also has another structure, called being a 'coalgebra', arising from the sequence $$H^*(BO) \to H^*(BO \times BO) \to H^*(BO) \otimes H^*(BO).$$ The second map is an isomorphism (the inverse of the Kunneth isomorphism). The first map arises as pullback of the continuous map $P: BO \times BO \to BO$, given by `direct sum of vector bundles': if $f_E: X \to BO$ and $f_F: X \to BO$ classify the bundles $E$ and $F$, respectively, then $P \circ (f_E, f_F)$ represents the bundle $E \oplus F$. (P stands for 'plus'.)
I will call this structure $P^*$.
Then the classes $w_1, w_2, \cdots$ are uniquely determined by the fact that $$P^*(1 + w_1 + w_2 + \cdots) = 1 \otimes 1 + (w_1 \otimes 1 + 1 \otimes w_1) + (w_2 \otimes 1 + w_1 \otimes w_1 + 1 \otimes w_2) + \cdots$$
This is a fancy algebraic phrasing of the Whitney sum formula.

In summary: If you have a characteristic class (cohomology class assigned to vector bundle, natural under pullback) you just need to determine which one it is, by evaluating it on some bundle --- the universal bundle will do.
If you want to define Stiefel-Whitney classes you need to pin down more than that because, say, $H^{17}(BO;\Bbb Z_2)$ is very large and it's not clear which class deserves the name $w_{17}$. For $H^2(BSO_n;\Bbb Z_2)$ there is only one nonzero class --- no such trouble.
