W 1987 roku ukończył studia politologiczne na Uniwersytecie Jagiellońskim. Pięć lat później, w 1995 roku, zdobył na tej samej uczelni stopień doktora, a w 2005 roku stopień doktora habilitowanego. W 2013 roku otrzymał tytuł profesora nauk humanistycznych od prezydenta Bronisława Komorowskiego. Jego główna specjalizacja naukowa to historia doktryn politycznych i prawnych.
W 1989 roku przyłączył się do NSZZ „Solidarność” i był wiceprzewodniczącym Komitetu Obywatelskiego „Solidarność” w Proszowicach. W latach 80. zaangażował się również w Polską Partię Socjalistyczną, zajmując się dystrybucją niezależnych publikacji i organizacją akcji ulotkowych.
Od 1982 do 1988 roku pracował jako nauczyciel w Proszowicach. W 1988 roku został adiunktem na Uniwersytecie Jagiellońskim. W 2008 roku awansował na stanowisko dyrektora Instytutu Nauk Politycznych i Stosunków Międzynarodowych tej uczelni i został profesorem UJ. Jest także afiliowany z Ośrodkiem Myśli Politycznej i wykłada na Państwowej Wyższej Szkole Wschodnioeuropejskiej w Przemyślu oraz Akademii Ignatianum w Krakowie. W 2002 roku objął funkcję prezesa Stowarzyszenia Obywatelskiego Ziemi Proszowickiej Pro Publico Bono.
W 2010 roku był jednym z członków Krakowskiego Społecznego Komitetu Poparcia Jarosława Kaczyńskiego. Jest członkiem partii Prawo i Sprawiedliwość. W 2011 i 2015 roku uzyskiwał mandat poselski z ramienia tej partii. W 2019 roku bez powodzenia próbował wejść do Parlamentu Europejskiego, ale później tego samego roku zdobył mandat senatora dziesiątej kadencji, uzyskując 97 648 głosów.
W listopadzie 2020 roku został mianowany przez premiera Mateusza Morawieckiego sekretarzem stanu w Ministerstwie Nauki i Szkolnictwa Wyższego, a od stycznia 2021 roku w Ministerstwie Edukacji i Nauki. Otrzymał także nominację na pełnomocnika rządu do spraw monitorowania wdrażania reformy edukacji wyższej i nauki.