Active directory

Hej!
Podpowiedzcie proszę jak do rails “zaciagnąć” nazwę aktualnie zalogowanego użytkownika windows? Docelowo chciałabym uzyskać funkcjonalność uwierzytelnienia przez aplikację rails użytkowników na podstawie wprowadzonych już poswiadczeń w windows ad.
pozdr.

1-wszy link z google

thx gotar informacje o google przyjmuje z opuszczoną gardą :slight_smile: moja wina, że niejasno sformowałam pytanie szukam gemu/rozwiazania uwierzytekniajacego userów w ramach nt/windows a nie z bazy aplikacji tak jak to robi devise, a tak przy okazji obejrzałam oczywiscie równiez linki gotara i mam pytanko dlaczego ENV[USERNAME] wyswietli mi usera w development a juz w produkcyjnym nie, co trzeba ustawić na configu production? no i przepraszam jeżeli moje pytania są tak proste :frowning:
dzięki Ala

1 Like

net-ldap ?

[quote=alicja]mam pytanko dlaczego ENV[USERNAME] wyswietli mi usera w development a juz w produkcyjnym nie, co trzeba ustawić na configu production?
dzięki Ala[/quote]
bump

[quote=alicja][quote=alicja]mam pytanko dlaczego ENV[USERNAME] wyswietli mi usera w development a juz w produkcyjnym nie, co trzeba ustawić na configu production?
dzięki Ala[/quote]
bump[/quote]
ENV zawiera w sobie zmienne środowiskowe, więc taka zmienna musi być dostępna na danym systemie. Jakiego systemu używasz na produkcji?

ubuntu z nginx na wirtualce

na innym ubuntu z thina ENV[‘USERNAME’] pokaże login name ale uruchomiona ta sama apka przez passanger juz nie

[quote=alicja]ubuntu z nginx na wirtualce

na innym ubuntu z thina ENV[‘USERNAME’] pokaże login name ale uruchomiona ta sama apka przez passanger juz nie[/quote]
To może wynikać z tego, że thin ustawia sam tą zmienną. Jeżeli chcesz mieć coś co będzie działało pomiędzy systemami możesz użyć np. whoami:

USERNAME = `whoami`.strip

Z ciekawości - do czego wykorzystujesz nazwę użytkownika?

hobbystyczna aplikacyjka dla małej firmy w intranecie do zapotrzebowania na spinacze i inne duperele. Nie udało mi się połączyć device z ldap-net żeby uwierzytelniał usera po ldap chciałam uniknąć wpisywania usera i hasła dla tak drobnej aplikacji myślałam , że chociaż ENV[USERNAME] da mi info do bazy z jakiej stacji szło zapotrzebowanie

ENV[USERNAME] daje Ci dostęp do użytkownika który uruchamia serwer np. Thin. Nie ma to nic wspólnego z użytkownikiem na którego jest zalogowany człowiek korzystający z przeglądarki. Co więcej przeglądarki nie wysyłają nazwy lokalnego loginu do serwera - bo byłoby to w oczywisty sposób rażącym naruszeniem prywatności.

Jeśli chcesz mieć single sign on w środowisku Windows to zainteresuj się NTLM.

jak Ty to znajdujesz, tyle googlałam :frowning: dzięki mam nadzieje, że ogarnę…

Czy są tu może osoby, które mają jakieś udane doświadczenia z wdrożeniem tego typu autentykacji i chciałyby się nimi podzielić? :slight_smile:

Sam potrzebuję teraz to wdrożyć, przeglądam kilka potencjalnych rozwiązań, ale przydałaby się jakaś wskazówka, w którą stronę iść.

Kod z mojej apki na 3ce

1. Tableless model
member.rb

class Member < ActiveRecord::Base

  def self.columns() @columns ||= []; end

  def self.column(name, sql_type = nil, default = nil, null = true)
    columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
  end

  column :name, :string
  column :password, :string

  attr_accessible :name, :password
end

2. łączenie z ldap

members_controller.rb

  def create
    @member = Member.new(params[:member])

    respond_to do |format|
    if @member.valid?           
    if @member.password !=nil
         if p = Net::LDAP.new 
            p.host = "10.9.95.100"  
            p.auth @member.name+"@domena.pl", @member.password                 
              if p.bind            
                session[:user]= @member.name     
              else
                @member.password = nil
                format.html { render action: "new" } 
              end  
         end
    else  
      format.html { render action: "new" }    
    end
        format.html { redirect_to @member, notice: 'Zalogowano do systemu' }
      else
        format.html { render action: "new" }
      end
    end
  end

A robiłeś może autentykację NTLM? Bo oto mi głównie chodzi. Apka stoi na nginx + unicorn i z tego co się zorientowałem nie ma żadnego modułu do nginx-a, który obsługuje ntlm. Pozostaje tylko przesiadka na apacha.

Sprawdz to

nginx oficjalnie nie dostarcza tego zatem dlatego pewnie masz problemy ze znalezieniem.
Możesz skorzystać też z:
http://wiki.nginx.org/XSendfile
zamiast przeskakiwac na apache

Mam działające rozwiązanie serwera proxy “stojącego w domenie” plus header enrichment. Dzięki temu obsługa różnych metod uwierzytelnienia jest mocno uproszczona.