It's important to note that OpenID and Cardspace already provide this passive description albeit in an implicit rather than explicit way. In OpenID the login text field should be named openid-url, and in Cardspace there is the <object type=“application/x-informationCard“ .../> tag which intelligent clients can search for in the DOM. However, “cool” dynamic web design can make finding these implicit descriptions difficult. And AFAIK, there is no best practice/recommendation/suggestion to do this passive description for SAML.
So I'm advocating an explicit markup in the HTML that would allow identity agents the ability to determine the identity meta-system characteristics of the site. This metadata would be used to make the user experience as seamless as possible while still protecting the user-centricity of the different protocols.
I don't think this needs to be complicated. For many web sites the description of protocols supported could be done with an XRDS or SAML metadata document. Reference to this document could then be done through <link> tags.
<link rel=”metadata” class=”saml” href=”http://path/to/sp/metadata”/>
<link rel=”metadata” class=”xrds” href=”http://path/to/sp/xrds”/>
The next step might be to use something like a microformat to describe the actual login form.
<div id=“signin-openid“ class=“login-openid“>
<form action=“http://ficlets.com/signin/openid.signin“ method=“post“ id=“openid-form“>
<ul>
<li>
<label for=“openid-url“>Your OpenID:</label> <input
type=“text“ name=“openid“ id=“openid-url“
class=“text-field login-openid-identity“
value=““ /><input type=“submit“
value=“Login“ class=“submit“ />
<i>Ex: http://your-username.livejournal.com/,
http://your-username.myopenid.com/</i>
</li>
</ul>
</form>
</div>
The <div> that contains the login form could then be referenced by id (or maybe just use the id of the form itself) via another <link> tag.
<link rel=”login.form” class=”openid” target=”signin-openid”/>
<link rel=”login.form” class=”infocard” target=”nameOfDivId”/>
The goal of these examples is to show a possible method for explicit, passive declaration of capabilities. I'm sure there are many ways to optimize and improve the concept... but hopefully this is enough to make the suggestion concrete.
[Credits: Many thanks to Kevin Lawver for microformat suggestions/corrections.]