728x90
300x250

[ASP.NET] 폼 인증 방식

ASP.NET는 새로운 인증 방식을 지원합니다. 인증 방식에는 Passport 인증, Windows 인증, Forms 인증이 있습니다.
인증 방식은 종류가 매우 다양합니다. ASP.NET에는 쿠키 상태, 세션 상태, Application 상태 등이 있습니다.
상태 관리를 변형하면 인증 방식으로도 사용할 수 있습니다. 그러므로 인증 방식의 종류가 매우 다양합니다.
인증 방식에 따라 코드가 간단하지만, 보안에 취약한 경우가 있을 것입니다.
흔히 우리는 쿠키를 통한 인증을 자주 사용합니다. 왜냐하면, Temporary Folder에 저장되므로 고급 사용자가 아닌 이상 접근할 빈도가 낮게 구현하기가 쉽기 때문입니다.


1) 인증 방식의 종류
Passport 인증 - MS의 Passport 서비스를 이용하여 인증합니다.
Windows 인증(우리가 사용하는 윈도우 계정) - 가장 강력하지만, 사내 인트라넷에서 사용하므로 사내 첩자를 찾아낼 수 있도록 탐지기술 도입이 
                                                                    필요 합니다.
Forms 인증 - 쿠키를 이용하여 인증처리를 구현합니다. 쉽게 구현가능하며 .NET Framework에 포함된 보안 기술을 사용할 수 있습니다.
사용자 지정 - 말 그대로 사용자가 직접 인증 프로세스를 만들어 냅니다. 구현하는 데 다소 복잡하다는 특성을 가지고 있습니다.

Web.Config

중략
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH" loginUrl="로그인페이지.aspx" defaultUrl="로그인 후에 접속할 페이지.aspx"></form>
</authentication>
</system.web>
중략

로그인 페이지에서 버튼에 프로세스 - 구현

버튼()
{
FormsAuthentication.RedirectFromLoginPage(인증아이디식별단자, 쿠키 보존 여부);
}

쿠키 보존 여부 : true, false

로그아웃 페이지에서의 버튼에 적용하기 - 구현

버튼()
{
FormsAuthentication.SignOut();
            Response.Redirect("로그아웃 후에 이동할 페이지.aspx");
}



2. 부록) 사용자 옵션

1) Protection: 쿠키에 사용되는 암호화 유형
Validation: 쿠키 변경 여부를 검사하여 데이터의 유효성 여부를 확인합니다.
None: 3DES, DES를 사용하여 암호화를 하지만, 쿠키에서 데이터의 유효성 검사는 수행하지 않습니다.
Encryption: 개인 설정 정보를 제공할 때만, 쿠키를 사용하고 보안 요구 사항이 낮은 사이트에 대해서는 암호화와 유효성 검사를 해지합니다.
All(기본값): 응용 프로그램이 데이터의 유효성 검사 및 암호화를 모두 사용하여 쿠키를 보호하도록 지정합니다.

2) Timeout: 쿠키가 만료될 때까지의 시간 지정
3) slidingExpiration: 상대(sliding) 만료의 설정 여부를 지정합니다. 기본값은 .NET Framework 1.x에서는 true이고, .NET Framework 2.0에서는 False입니다.

True: 새로 고침 하면 다시 갱신
False: 만료기간 제거

4) name: 인증 쿠키의 이름 지정 (기본값: .ASPAUTH)
5) domain: 쿠키를 공유할 수 있는 도메인 설정
6) Cookless: 인증 쿠키의 사용 여부 및 동작 설정
UseCookies: 장치에 관계없이 쿠키를 항상 사용합니다.
UseUrl: 쿠키를 사용하지 않고 인증 정보를 URL에 저장합니다.
AutoDetect: 브라우저에서 쿠키를 지원하면 쿠키를 사용하고 그렇지 않으면, 쿠키를 사용하지 않습니다.
UseDeviceProfile(기본값): 장치 프로필에서 쿠키를 지원하면 쿠키를 사용하고 그렇지 않으면, 쿠키를 사용하지 않습니다.

7) EnableCrossAppRedirects

폼 인증 티켓이 쿠키에 저장되어 있지 않은 경우 인증된 사용자를 다른 웹 응용 프로그램의 URL로 리디렉션할 수 있는지 여부를 나타내는 값을 가져옵니다.


3. 참고자료(Reference)

1. 기술지원, http://msdn.microsoft.com/ko-kr/library/9wff0kyh.aspx

반응형
728x90
300x250

[ASP.NET] Jquery - Modal Dialog 사용법

ASP.NET에서 Ajax(변형된 자바스크립트 - 비동기식 자바스크립트)를 사용하기 위해선 크게 두 가지 방법으로 요약할 수 있습니다.

첫 번째로 AjaxControlTookit을 이용하는 방법입니다. Microsoft에서 공개하고 있는 DLL 라이브러리를 이용하여 사용할 수 있습니다.
(홈페이지 주소 : http://www.asp.net/ajax/ajaxcontroltoolkit/)

두 번째로 jQuery를 이용하는 것입니다.
jQuery 팀 프로젝트에서 운영하는 jQuery(자바스크립트)를 이용하여 구현하는 방법을 들 수 있겠습니다.
(홈페이지 주소 : http://jqueryui.com)

이번 게시물은 간편하고 사용하기는 쉬우나 (힘들게하는) AjaxControltoolkit이 아닌 jQuery를 ASPX(ASP.NET 파일)에 적용하는 방법을 소개하겠습니다.


1. jQuery 홈페이지에서 사용자 테마에 맞는 jQuery 내려받기

jQuery 홈페이지에서 Download를 클릭합니다.



왼쪽에 Download를 클릭합니다.
참고) design a custom theme을 클릭해서 사용자 입맛에 맞게 설정된 테마가 포함된 라이브러리를 내려받으실 수 있습니다.



압축 파일은 이처럼 구성되어 있습니다.
index.html 파일을 열면 Demonstration을 보실 수 있습니다.

2. Visual Studio.NET의 ASP.NET 프로젝트에 적용시키기



사용자가 만들어낸 프로젝트 위치에 js와 css 폴더를 붙여 넣습니다.
(Visual Studio.NET의 프로젝트 경로는 내 문서에 Visual Studio 그리고 Projects 폴더 안에 생성되어 있습니다.)
-> 사용자가 별도로 지정한 경우에는 해당하지 않습니다.



Visual Studio의 자신의 프로젝트에 아까 복사 붙여 넣기 한 폴더를 끌고 와서 집어넣습니다.

아래의 코드는 Modal Dialog를 ASP.NET에서 사용할 수 있도록 구성된 예제입니다.

<%@ Page Language="C#" AutoEventWireup="true"  %>
<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/C#" runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            ClientScript.GetPostBackEventReference(uxGrid, string.Empty);
            if (!Page.IsPostBack)
            {
                List<int> test = new List<int>();
                test.Add(2);
                test.Add(3);
                test.Add(32);
                test.Add(223);
                test.Add(5);
                test.Add(8);
                uxGrid.DataSource = test;
                uxGrid.DataBind();
            }
        }
        protected void uxRowAction_Click(object sender, EventArgs e)
        {
            Button b = sender as Button;
            if (b != null)
            {
                uxTest.Text = "clicked " + b.CommandArgument;
            }
        }
    </script>
    <link href="smoothness/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css" />
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script src="jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $().ready(function() {
            $('#dialogContent').dialog({
                autoOpen: false,
                modal: true,
                bgiframe: true,
                title: "MySql Membership Config Tool",
                width: 800,
                height: 600
            });
        });
        function rowAction(uniqueID) {
            $('#dialogContent').dialog('option', 'buttons',
                {
                    "OK": function() { __doPostBack(uniqueID, ''); $(this).dialog("close"); },
                    "Cancel": function() { $(this).dialog("close"); }
                });
                $('#dialogContent').dialog('open');
            return false;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="dialogContent">
        <h3>confirm</h3>
        <p>Click ok to accept</p>
    </div>
    <asp:Literal ID="uxTest" runat="server" />
    <div>
        <asp:DataGrid ID="uxGrid" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateColumn>
                    <ItemTemplate>
                        <asp:Button ID="uxRowAction" runat="server" CommandArgument='<%#Container.DataItem.ToString() %>' Text="Row Action" OnClick="uxRowAction_Click" OnClientClick="javascript:return rowAction(this.name);" />
                    </ItemTemplate>
                </asp:TemplateColumn>
            </Columns>
        </asp:DataGrid>
    </div>
    </form>
</body>
</html>

참조)
http://www.integratedwebsystems.com/2009/12/using-jquery-modal-dialog-confirmation-with-an-asp-net-server-control/

위의 내용을 참조하여 적용하는 방법에 대해 확인하시기 바랍니다.

출력 결과는 아래와 같습니다.



초깃값이 800 * 600 해상도인데 캡처를 하기 위해서 수동으로 줄였습니다.



조금 전에 jQuery를 압축 풀었던 폴더로 돌아가시면 Demo 자료가 있습니다.
이 자료들을 참고하시어 ASP.NET 환경에 맞게 설정해주시면 됩니다.


2. 이 글을 마치면서 느낀 점
AjaxControlToolkit도 편리하지만, jQuery보다는 매력이다는 생각은 들지 않습니다.
jQuery는 Google과 같은 거대한 사이트에서도 적용하고 있을 만큼 굉장히 이식성이 좋습니다.
더불어 Open License라서 개조하기도 수월합니다.
AjaxControlToolkit은 DLL을 웹 서버에도 적용시켜줘야 하고 손이 많이 타기 때문에 개인적으로 jQuery가 더 마음에 듭니다.
이만 글을 정리하며 많은 분이 성공적인 Web2.0 환경을 구축하길 바랍니다.
반응형
728x90
300x250

[Win2003] IIS 6 - ASP.NET CS0016 : Could not write to output file 에러 해결 방안

Compiler Error Message: CS0016: Could not write to output file ‘c:\WINDOWS\Microsoft.NET\Framework\버전\Temporary ASP.NET Files\myapp\xxxxx\xxxxx\App_GlobalResources.xxxxxxx.dll’ — ‘Access is denied.’

IIS6에 ASP.NET을 초기 설치 시 발생할 확률이 높은 오류입니다.
주로 컴파일러에 파일을 출력할 수 없을 때 발생하는 오류입니다.


1. 해결방안

32bit일 때 Framework 경로
C:\Windows\Microsoft.NET\Framework\버전\Temporary ASP.NET Files\
64bit일 때 Framework 경로
C:\Windows\Microsoft.NET\Framework64\버전\Temporary ASP.NET Files\

공통사항 임시 폴더
C:\Windows\Temp


Everyone과 Network Service의 권한을 전체 허용으로 해줍니다.
반응형
728x90
300x250

[Win2003] IIS 6 - ASP.NET 사용하기

Windows 2003에서 NET Framework의 ASP.NET을 사용하기 위해서는 별도로 환경설정을 설치를 해주어야 합니다.
먼저 IIS에서 ASP.NET을 사용하도록 허용한 뒤에 그것을 감지할 수 있는 환경설정 설치 프로그램을 통해 사용가능한 상태로 변경해주어야 합니다.

1. NET Framework ASP.NET의 Application 상태 허용



2. IIS WebSite의 Net Framework 버전을 선택하여 환경설정 하기



버전에 맞도록 설정한 내용을 통해 설치가 이루어집니다.
각 설정에 맞도록 별도의 디렉터리에 설치가 이루어집니다.

3. CMD(명령프롬프트)를 통한 환경설정 설치


C:\Windows\Microsoft.NET\Framework\버전\aspnet_regiis.exe -i

버전 별로 컴파일을 할 수 있으니 사용자의 환경에 맞게 찾아 컴파일하시면 됩니다.

반응형

+ Recent posts