So you know how you need the second Stieffel Whitney class of spacetime to vanish for fucking fermions to make sense? Why is that?
First you have an SO(n) bundle. But you want it to be an Spin(n) bundle so that the sections on the associated vector bundle will become fermion fields.
Viewing the bundles as homotopy classes of maps instead you are looking at a lift of the map from X to BSO(n) to a map from X to BSpin(n).
There is a map from BSO(n) to BBZ_2 given by the special element 1 of [BSO(n), BBZ_2]=H^2 (BSO(n),Z_2)=Z. This is the second Stieffel-Whitney class. Pullback the universal bundle gets you BSpin(n). So in order for the map to lift, the diagram must commute. This means that the map X to BSO(n) to BBZ_2 has to vanish all the time. That only works when this class vanishes for the tangent bundle.
Now to get from Spin(n) to String(n). Repeat the construction.
There is a map from BSpin(n) to BBBU(1) given by H^3 (BSpin(n) , U(1))=Z. Pullback the universal bundle to get BString(n). The diagram commutes when the composite X to BBBU(1) vanishes. This class is half the first Pontryagin class in H^4(X,Z).
Repeat again from String(n) to Fivebrane(n). This time replace BBBU(1) with 7 applications of delooping. The obstruction class is now one sixth the second Pontryagin class in H^8(X,Z).
http://arxiv.org/pdf/0805.0564v3.pdf