Seems like I had this problem for years, but know I had time and found the reason.
Digging into openid/server.php:
if (is_front_page()) {
if (!defined('OPENID_DISALLOW_OWNER') || !OPENID_DISALLOW_OWNER) {
$user = get_userdatabylogin(get_option('openid_blog_owner'));
}
} else if (is_author()) {
global $wp_query;
$user = $wp_query->get_queried_object();
}
For some strange reason conditional tag if is_front_page() returns false. People also say that it only works in templates...
Either way, if I replace is_front_page with is_home then everything is allright and server declares itself...