[ASP.NET 2.0] Jak na webovou službu s přihlašovacími údaji   otázka

ASP.NET/IIS, Bezpečnost

Dobrý den. Navazuji na toto téma:

http://www.vbnet.cz/forum-tema--5320-asp...

Prozatím jsem provedl:

1. Vytvoření webové služby v rámci webové aplikace s níže uvedenou konfigurací. Mám databázi s přihlašovacími údaji a nadefinovaný MembershipProvider, který zprostředkovává ověření uživatele.

<connectionStrings>
  <remove name="LocalSqlServer"/>
  <add name="LocalSqlServer"
       connectionString="Data Source=sql.mujprovider.cz;
          Initial Catalog=DbName;Persist Security Info=True;
          User ID=Uzivatel;Password=Heslo"
          providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
   <authentication mode="Forms">
     <forms loginUrl="Login.aspx"/>
   </authentication>
   <authorization>
     <!--<deny users="?"/>-->
   </authorization>
   <roleManager enabled="true" />
   <membership defaultProvider="SqlProvider" 
     userIsOnlineTimeWindow="60">
     <providers>
       <remove name="AspNetSqlProvider"/>
       <clear/>
       <add name="SqlProvider" 
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="LocalSqlServer"
            applicationName="/"
            enablePasswordRetrieval="true"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="false"
            minRequiredPasswordLength="4"
            minRequiredNonalphanumericCharacters="0"
            passwordFormat="Clear"/>
     </providers>
   </membership>
</system.web>

V rámci této aplikace jsem připravil jednoduchou wbovou službu, která se jen zaloguje, že byla spuštěná.

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols

<WebService(Namespace:="http://test-service.aspone.cz/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class TestWebService
    Inherits System.Web.Services.WebService

    Dim UspesneZalogovano As Boolean

    <WebMethod()> _
    Public Function SpustitZapisDoLogu() As String
        UspesneZalogovano = False
        Call ZapisDoLogu()
        If UspesneZalogovano Then
            Return "Ok"
        Else
            Return "Chyba"
        End If
    End Function

    Private Sub ZapisDoLogu()
        Dim Adresar As String = Server.MapPath("~/App_Data/")
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("windows-1250")
        Dim sw As New System.IO.StreamWriter(Adresar & "logWebService.txt", True, enc)
        sw.WriteLine(Now)
        sw.Close()
        UspesneZalogovano = True
    End Sub

End Class

Důležité je, že ve web.config je zatím zakomenována autorizace, takže webová služba je dostupná i bez přihlášení.

2. Pro testování jsem vytvořil druhou webovou aplikaci (http://ces.aspone.cz/), která volá webovou službu z první aplikace. Ve VWD menu jsem dal Website - Add Web Reference ... a zadal příslušnou URI 'http://test-service.aspone.cz/TestWebSer...'. Web.config druhé aplikace + volání webové služby po kliknutí na tlačítko:

<appSettings>
	    <add key="cz.aspone.test_service.TestWebService" value="http://test-service.aspone.cz/TestWebService.asmx"/>
	</appSettings>
	<connectionStrings/>
	<system.web>
		<customErrors mode="Off"/>
		<compilation debug="true"/>
		<authentication mode="Windows"/>
	</system.web>

Imports cz.aspone.test_service

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub VolejSluzbu(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim ws As New TestWebService
        Me.labInfo.Text = "Služba zavolána " & Now & " s výsledkem: " & ws.SpustitZapisDoLogu()
    End Sub

End Class

No a dál jsem se zatím nedostal, potřeboval bych poradit, jak do toho zamontovat tu autentizaci. První krok bych ještě věděl, ve web.config první aplikace zakážu přístup anonymním uživatelům (viz nahoře, jen to odkomentuju). Jaké ale další nastavení? Doufám, že je to "jen" otázka nastavení ve web.config. Hledal jsem na webu, ale z těch všech WSE a WCF jsem docela zmatený, nevím co je pro mé potřeby nejvhodnější či nejjednodušší. Potřeboval bych názorný příklad. Ani si nejsem jistý, jestli můžu pokračovat na základě výše uvedeného, nebo jestli jsem neměl tvořit jiný druh webové služby...

Pokud byste mě postrčili dál v řešení, budu vděčný.

Děkuji, Jiří.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback