2008. 3. 10. 10:40
사용자 편의를 극대화 시켜주는
OpenID 적용을 검토하기 위해 공개 라이브러리를 구글링을 했습니다.
PHP용 라이브러리는 많지만 .NET 기반 오픈 소스는 생각 보다 없다는 느낌을 받았습니다.
하지만 이중에 상당한 완성도를 가진 소스를 발견했습니다.
ExtremeSwank 라이브러리입니다.
.NET 2.0 기반으로 개발되어 있지만, 3.0에서도 사용 가능할 것 같네요. 깔끔한 라이브러리 소스, 별도의 웹 컨트롤 예제 등으로 구성되어 있어 활용도가 높고, OpenID 1.1 과 2.0을 모두 지원하고 있다는 장점도 가지고 있습니다. 아래 코드처럼 적용이 간단합니다.
/* 활용 예제 */
using ExtremeSwank.Authentication.OpenID;
public partial class _Default
{
protected void LoginButton_Click(object sender, EventArgs e)
{
OpenIDConsumer openid = new OpenIDConsumer();
openid.Identity = LoginBox1.Text;
Session["OpenID_Login"] = openid.Identity;
openid.BeginAuth();
}
protected void LogOutButton_Click(object sender, EventArgs e)
{
Session["OpenID_UserObject"] = null;
// Handle user logout here
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
OpenIDConsumer openid = new OpenIDConsumer();
switch (openid.RequestedMode)
{
case RequestedMode.IdResolution:
openid.Identity = (string)Session["OpenID_Login"];
if (openid.Validate())
{
OpenIDUser thisuser = openid.RetrieveUser();
Session["OpenID_UserObject"] = thisuser;
// Authentication successful - Perform login here
}
else
{
// Authentication failure handled here
}
break;
case RequestedMode.CancelledByUser:
// User has cancelled authentication - handle here
break;
}
}
}
}
.NET 기반의 공개 라이브러리를 이용한 OpenID 적용을 검토 중 이라면 적극 추천합니다.
앞으로 MS에서 AJAX를 지원 했던 것처럼, .NET 라이브러리에 OpenID 컨트롤을 정식 지원해주길 기대해봅니다.