Ваш аргумент openid.signed должен быть именно тем, что OP отправил вашему RP, а не этим неполным жестко запрограммированным списком из 3 параметров, с одной стороны. Все ваши аргументы должны быть также закодированы URL, а не только ваш nonce.
Проверка токена OpenID намного больше, чем просто отправка его обратно в OP с использованием «тупого режима». Что ты пытаешься сделать?
Рассматривали ли вы использование библиотеки OpenID ? Серьезно, правильно выбрать OpenID (что означает безопасность и совместимость) - большая работа. Гораздо больше, чем просто сбор правильной строки запроса. :)