Początkowo pracował jako urzędnik sądowy i pośrednik ubezpieczeniowy w PZU. Od 1988 zawodowo związany z Uniwersytetem Jagiellońskim, doszedł do stanowiska profesora zwyczajnego w Instytucie Nauk Politycznych i Stosunków Międzynarodowych. W latach 2005–2008 pełnił funkcję prodziekana ds. ogólnych Wydziału Studiów Międzynarodowych i Politycznych UJ, a w 2008 został dziekanem tego wydziału. Pracował także w Katedrze Prawa Akademii Ekonomicznej w Krakowie, jak też na Akademii Ignatianum w Krakowie.

W 2000 objął funkcję przewodniczącego komitetu redakcyjnego serii Biblioteka Klasyki Polskiej Myśli Politycznej, a w 2003 redaktora naczelnego „Politei. Pisma Wydziału Studiów Międzynarodowych i Politycznych UJ”. Był dyrektorem Instytutu Praw Człowieka w Oświęcimiu i redaktorem naczelnym wydawanego przez tę jednostkę biuletynu. Współpracownik Ośrodka Myśli Politycznej.

Został członkiem Komitetu Nauk Politycznych PAN na kadencję 2020–2023.

Został członkiem Krakowskiego Społecznego Komitetu Poparcia Jarosława Kaczyńskiego w przedterminowych wyborach prezydenckich w 2010.

18 listopada 2015 z rekomendacji Prawa i Sprawiedliwości wybrany na członka Trybunału Stanu.