83 messaggi dal 17 giugno 2005
Salve,

utilizzando le webpart,la dll Microsoft.sharepoint in ambiente Vs2005 (x questo ho scelto questo forum per inserie il thread scusate se ho sbagliato) sto provando a creare una pagina di login al portale.

Le caratteristiche del mio portale Share point sono queste:
1.Abilitazione dell'accesso anonimo
2.Autenticazione basata su FORM con utilizzo della mia pagina di Login.
3.Utilizzo delle webpart tramite le SMARTPART
4.Gli utenti che si registrano, con una web part già creata, vegono aggiunti come utenti di macchina e quindi come utenti di sharepoint in uno specifico gruppo.

Problema:
L'utente, inizialmente anonimo e quindi di tipo Network services, deicede di loggarsi.
Quindi utilizzando la mia webpart verifico che sia un utente sharepoint e in caso positivo devo (non so come) passare dall'utente anonimo all'utente corrente.


Dalla documentazione in linea relativa alla modello a oggetti di share point sono arrivato a questo codice:

_site = New SPSite("http://server") //istanzio oggetto di tipo spsite
_webApplication = _site.AllWebs(0) //istanzione oggetto di tipo spweb
_webApplication.Site.AllowUnsafeUpdates = True 'eseguo codice con priviligi massimi
_UserName = Server.MachineName & "\" & Me.txtUserName.Text.Trim //utente da validare
_user = _webApplication.AllUsers.Item(_UserName) //lo cerco nella collezione di utenti della web application corrente
'...verificato che esiste ......'
_TokenNuovoUtente= _user.UserToken //prelevo il token relativo a questo utente
//istanzio un nuovo site passando il token dell'utente da loggare
Dim impersonatedSiteCollection As New SPSite("http://server", _TokenNuovoUtente)
Dim _WebVetrina As SPWeb = impersonatedSiteCollection.OpenWeb()
impersonatedSiteCollection.OpenWeb() //....

da qui non riesco a continuare, nel senso che se scrivo un messaggio a video richiedendo il 'loginName' dell'utente loggato nel nuovo SPweb è quello inserito ma di fatto quello che vedo a video è ancora la mia pagina di login, con il relativo utente anonimo.

Come faccio a 'passare' alla pagina/contesto in cui l'utente è loggato??

Grazie in anticipo.
652 messaggi dal 21 gennaio 2007
Contributi
Allora.. ti faccio un paio di domande per capire meglio come ti sei mosso.
Prima di tutto, hai fatto un provider di authenticazione custom giusto ? oppure hai utilizzato quello di default inserito in asp.net 2.0 ?
e hai registrato tutto nel web.config giusto ?
Poi, nella web part che effettua il login, hai utilizzato il controllo Login di asp.net o altro ?
83 messaggi dal 17 giugno 2005
Ciao,
premesso che non dubitavo della tua risposta ( facendo delle ricerche su questo problema ho visitato il tuo blog) la situazione è questa:

1-Nel web config relativo al portale ho questa situazione:
<authentication mode="Forms">

<forms name=".ASPXAUTH"
loginUrl="~/pages/login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="20"
requireSSL="true">
</forms>

</authentication>
<identity impersonate="true" />
2-Sul portale ho abilitato l'accesso anonimo per tutto il sito
3-La web part che effetua il login è del tutto custom, perchè per validare l'utente devo fare tre controlli:
a-deve esistere come utente di macchina-> vuol dire che si è registrato al portale
b-deve appartenere ad un determinato gruppo di sharepoint->vuol dire che la sua richiesta di registrazione è stata accetata
c-deve rispettare delle condizioni che verifico usando un database custom

se passa questi controlli dovrei fare in modo di autenticarlo sul sito, in pratica è la stessa operazione che farei sul portale quando avendo l'autenticazione di windows integrata scelgo l'opzione ' Sign in '

Dubbio: il portale di sharepoint non utilizza come provider di autenticazione quello tipico per l'autenticazione basata su FBA perchè ho bisogno dell'autenticazione basata su windows, però nel web config ho dichiarato l'autenticazione di tipo FORM SOLO PER EVITARE che al momento del login all'operatore compaia il classico pop up di windows...fosse questo l'errore?
652 messaggi dal 21 gennaio 2007
Contributi
no allora.
sharepoint si basa su asp.net 2.0, quindi per creare un sistema di autenticazione custom devi scrivere un membership provider personalizzato ereditando da System.Web.Security.MembershipProvider ed implementando almeno i metodi:
- FindUsersByName
- GetAllUsers
- GetUser (both versions)
- ValidateUser

all'interno del metodo ValidateUser, puoi inserire tutta la logica di validazione dell'utente che ora hai inserito all'interno della tua attuale web part.

fatto questo, devi registrare il provider all'interno del web.config, proprio come faresti con un'applicazione asp.net 2.0 o superiore.

<membership defaultProvider="MyProvider">
  <provider>
    <add name="MyCustomProvider" type="namespace.providerclass"/>
  </provider>
</membership>


poi, non vorrei sbagliarmi, ma non c'è bisogno di modificare l'elemento "authentication" all'itnerno del web.config, perchè sarà poi sharepoint a decidere che tipo di autenticazione utilizzare, in base ai settings che tu hai definito all'itnerno della central administration.

fatto tutto questo, devi aggiungere il tuo provider di autenticazione all'itnerno della central administration e abilitarlo come provider princiale.

ti consiglio di leggerti questi:
http://robgarrett.com/cs/blogs/software/archive/2006/06/01/custom-membership-provider-under-minimal-trust-in-sharepoint-2007.aspx
http://channel9.msdn.com/posts/BomBom/Building-your-own-MemberShipProvider-in-ASPNET-20-and-use-it-in-SharePoint/
http://www.codeproject.com/KB/sharepoint/moss_enableforms.aspx
83 messaggi dal 17 giugno 2005
Rileggendo il post, credo di essermi spiegato maluccio x non dire male

Per specifiche che non posso cambiare il portale deve funzionare con l'autenticazione integrata di windows e quindi no Forms.

L'unico problema è che con questa modalità alla richiesta di log in compare il classico pop up di windows, che non è per niente uer frendly.

quindi credo che la domanda giusta è questa:

senza cambiare provider di autenticazione, è possibile sostituire il pop up con una pagina aspx personalizzata che al termine di una serie di controlli simula l'autenticazione nel portale ( anche se devo aprire un altra finestra ).

Grazie per l'interesse.
652 messaggi dal 21 gennaio 2007
Contributi
Guarda.. non l'ho mai visto fare ne provato.
Però in teoria, avendo abilitato l'accesso anonimo, all'interno di una tua web part custom dovresti riuscire ad impersonare l'utente corrente.. però non ne sono sicuro..
Prova a leggere questo:
http://www.peppedotnet.it/Blog/SharepointImpersonation.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.