"I have signed this bill despite having serious reservations with certain provisions that regulate the detention, interrogation, and prosecution of suspected terrorists," he said of the $662 billion legislation.
The White House had lifted a veto threat against the bill after legislators made changes in language involving detainees.
In particular, the legislators added language to make clear that nothing in the bill requiring military custody of al Qaeda suspects would interfere with the ability of civilian law enforcement to carry out terrorism investigations and interrogations in the United States.
The House approved the bill on December 14, and a 86-13 vote in the Senate the next day completed the necessary congressional action.
At issue was the president's authority in deciding whether people detained in terrorism investigations would be held in military or civilian custody.
Sen. John McCain of Arizona, the top Republican on the Senate Armed Services Committee, said the legislation includes a "national security waiver" that allows the president to transfer a suspect from military to civilian custody if he chooses.
"I want to clarify that my administration will not authorize the indefinite military detention without trial of American citizens," Obama said in a statement Saturday. "Indeed, I believe that doing so would break with our most important traditions and values as a nation."
Obama said a section of the bill provides the "executive branch" with broad authority on military custody for non-citizen detainees.
The legislators also agreed on tough sanctions language for the Iranian Central Bank, aimed at punishing Iran for its nuclear program.
The measure "will put real additional pressure on the Iranians so they are going to pay a bigger and bigger price, if they continue to move towards nuclear weapons," said Sen. Carl Levin, D-Michigan, chairman of the Senate Armed Services Committee.
In addition, legislators agreed to tough new restrictions on Pakistan to ensure that country is not participating in the manufacture and transport of improvised explosive devices, or IEDs -- the hidden bombs that have caused havoc for coalition forces in Afghanistan.
"Ultimately, I decided to sign this bill not only because of the critically important services it provides for our forces and their families and the national security programs it authorizes, but also because the Congress revised provisions that otherwise would have jeopardized the safety, security, and liberty of the American people," the president said Saturday.