ユーザ用ツール

サイト用ツール


aspで基本認証

ASP で基本認証をする (unibon) http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/basicauth.html

<%@Language=VBScript%>

<%Option Explicit%>
<%

' ここに BASE64 の Function 一式を挿入します。

Function auth(ByVal httpauthorization, ByRef username, ByRef password)
  Const One = 1

  If IsEmpty(httpauthorization) Then ' 基本認証のダイアログボックスでキャンセル ボタンが押された場合
      username = Null
      password = Null
      auth = False
  Else ' 基本認証のダイアログボックスで OK ボタンが押された場合
     Dim t
     t = Mid(s, 5 + 1 + One)
     Dim d
     d = decode64(t)

     Dim p
     p = Instr(One, d, ":")

     If p >= One Then
         username = Left(d, p - One)
         password = Mid(d, p + 1)
         auth = True
     Else
         username = Null
         password = Null
         auth = False
     End If
 End If
End Function

Dim s
s = Request.ServerVariables("HTTP_AUTHORIZATION")
Dim u
Dim p
Dim b
b = auth(s, u, p)
If b Then ' 基本認証のダイアログボックスで OK ボタンが押された場合
 If u = "xxx" And p = "yyy" Then ' 入力されたユーザ名とパスワードが、登録のものと一致した場合
     Call Response.Write("<HTML><BODY>" & vbNewLine)
     Call Response.Write("username=" & u & ", password=" & p & "<BR>" & vbNewLine)
     Call Response.Write("ようこそ。<BR>" & vbNewLine)
     Call Response.Write("</BODY></HTML>" & vbNewLine)
 Else ' 入力されたユーザ名とパスワードが、登録のものと一致しなかった場合。
     Response.Status = "401 Unauthorized" ' 2001/06/10 認証をリトライするために追加。
     Call Response.AddHeader("WWW-Authenticate", "BASIC realm=""hogehoge""")  ' 2001/06/10 認証をリトライするために追加。
     ' 入力を間違えるたびに毎回 response されるが、通常のブラウザでは、3回間違えたときにはじめてこの画面が目に見えるように表示される。
     Call Response.Write("<HTML><BODY>" & vbNewLine)
     Call Response.Write("username=" & u & ", password=" & p & "<BR>" & vbNewLine)
     Call Response.Write("ユーザ名またはパスワードが違います<BR>" & vbNewLine)
     Call Response.Write("</BODY></HTML>" & vbNewLine)
 End If
Else ' 初回のアクセスだった場合、または、基本認証のダイアログボックスでキャンセルボタンが押された場合
 Response.Status = "401 Unauthorized"
 Call Response.AddHeader("WWW-Authenticate", "BASIC realm=""hogehoge""")
 Call Response.Write("<HTML><BODY>" & vbNewLine)
 Call Response.Write("認証できません<BR>" & vbNewLine)
 Call Response.Write("</BODY></HTML>" & vbNewLine)
End If
%>
aspで基本認証.txt · 最終更新: 2019/06/30 12:22 by 127.0.0.1